Mercurial > emacs
annotate src/xterm.c @ 15037:07171585640f
(decode_mode_spec): For %F, use explicit name or `Emacs'.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 16 Apr 1996 22:52:34 +0000 |
parents | 6ac4f300f9b4 |
children | c99dd01d9334 |
rev | line source |
---|---|
286 | 1 /* X Communication module for terminals which understand the X protocol. |
14826
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
2 Copyright (C) 1989, 93, 94, 95, 1996 Free Software Foundation, Inc. |
286 | 3 |
4 This file is part of GNU Emacs. | |
5 | |
6 GNU Emacs is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
621 | 8 the Free Software Foundation; either version 2, or (at your option) |
286 | 9 any later version. |
10 | |
11 GNU Emacs is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GNU Emacs; see the file COPYING. If not, write to | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14165
diff
changeset
|
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14165
diff
changeset
|
19 Boston, MA 02111-1307, USA. */ |
286 | 20 |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
21 /* 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
|
22 |
2977
ddcad1457cd5
Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents:
2958
diff
changeset
|
23 /* 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
|
24 /* 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
|
25 /* 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
|
26 #include <signal.h> |
ddcad1457cd5
Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents:
2958
diff
changeset
|
27 |
4696
1fc792473491
Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents:
4683
diff
changeset
|
28 #include <config.h> |
286 | 29 |
7902
22b9aaaf0302
Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents:
7870
diff
changeset
|
30 #include <stdio.h> |
22b9aaaf0302
Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents:
7870
diff
changeset
|
31 |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
32 /* 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
|
33 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
|
34 #include "syssignal.h" |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
35 |
286 | 36 #ifdef HAVE_X_WINDOWS |
37 | |
38 #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
|
39 #include "blockinput.h" |
286 | 40 |
41 /* This may include sys/types.h, and that somehow loses | |
42 if this is not done before the other system files. */ | |
43 #include "xterm.h" | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
44 #include <X11/cursorfont.h> |
286 | 45 |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
46 #ifndef USG |
286 | 47 /* Load sys/types.h if not already loaded. |
48 In some systems loading it twice is suicidal. */ | |
49 #ifndef makedev | |
50 #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
|
51 #endif /* makedev */ |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
52 #endif /* USG */ |
286 | 53 |
54 #ifdef BSD | |
55 #include <sys/ioctl.h> | |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
56 #endif /* ! defined (BSD) */ |
286 | 57 |
3355
e0c2e8a2ef75
(XTread_socket, case KeyPress) [HPUX]: Test IsModifiedKey.
Richard M. Stallman <rms@gnu.org>
parents:
3284
diff
changeset
|
58 #include "systty.h" |
555 | 59 #include "systime.h" |
286 | 60 |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
61 #ifndef INCLUDED_FCNTL |
286 | 62 #include <fcntl.h> |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
63 #endif |
286 | 64 #include <ctype.h> |
65 #include <errno.h> | |
66 #include <setjmp.h> | |
67 #include <sys/stat.h> | |
10366 | 68 /* Caused redefinition of DBL_DIG on Netbsd; seems not to be needed. */ |
69 /* #include <sys/param.h> */ | |
286 | 70 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
71 #include "frame.h" |
286 | 72 #include "dispextern.h" |
73 #include "termhooks.h" | |
74 #include "termopts.h" | |
75 #include "termchar.h" | |
76 #if 0 | |
77 #include "sink.h" | |
78 #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
|
79 #endif /* ! 0 */ |
286 | 80 #include "gnu.h" |
81 #include "disptab.h" | |
82 #include "buffer.h" | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
83 #include "window.h" |
8652 | 84 #include "keyboard.h" |
8848 | 85 #include "intervals.h" |
286 | 86 |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
87 #ifdef USE_X_TOOLKIT |
5898
105c99071e9b
(x_destroy_window) [USE_X_TOOLKIT]: Call free_frame_menubar.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5872
diff
changeset
|
88 extern void free_frame_menubar (); |
13507
9a9f459075af
(HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
89 extern FRAME_PTR x_menubar_window_to_frame (); |
9a9f459075af
(HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
90 #if (XtSpecificationRelease >= 5) && !defined(NO_EDITRES) |
9a9f459075af
(HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
91 #define HACK_EDITRES |
6941
a914781ef58a
(Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents:
6934
diff
changeset
|
92 extern void _XEditResCheckMessages (); |
13507
9a9f459075af
(HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
93 #endif /* not NO_EDITRES */ |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
94 #endif /* USE_X_TOOLKIT */ |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
95 |
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
96 #ifndef USE_X_TOOLKIT |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
97 #define x_any_window_to_frame x_window_to_frame |
6983
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
98 #define x_top_window_to_frame x_window_to_frame |
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
99 #endif |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
100 |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
101 #ifdef USE_X_TOOLKIT |
12189 | 102 #include "widget.h" |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
103 #ifndef XtNinitialState |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
104 #define XtNinitialState "initialState" |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
105 #endif |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
106 #endif |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
107 |
14963
6ac4f300f9b4
Include locale.h if HAVE_SETLOCALE.
Richard M. Stallman <rms@gnu.org>
parents:
14946
diff
changeset
|
108 #ifdef HAVE_SETLOCALE |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
109 /* So we can do setlocale. */ |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
110 #include <locale.h> |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
111 #endif |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
112 |
14305
3cc44eaf9ebf
(x_connection_signal): Explicitly check the thread interlock
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
113 #ifdef SOLARIS2 |
14694
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
114 #define X_CONNECTION_LOCK_FLAG XlibDisplayWriting |
14305
3cc44eaf9ebf
(x_connection_signal): Explicitly check the thread interlock
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
115 #endif |
3cc44eaf9ebf
(x_connection_signal): Explicitly check the thread interlock
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
116 |
14522
9cee3e7c6468
(min, max): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents:
14489
diff
changeset
|
117 #ifndef min |
286 | 118 #define min(a,b) ((a)<(b) ? (a) : (b)) |
14522
9cee3e7c6468
(min, max): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents:
14489
diff
changeset
|
119 #endif |
9cee3e7c6468
(min, max): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents:
14489
diff
changeset
|
120 #ifndef max |
286 | 121 #define max(a,b) ((a)>(b) ? (a) : (b)) |
14522
9cee3e7c6468
(min, max): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents:
14489
diff
changeset
|
122 #endif |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
123 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
124 /* This is a chain of structures for all the X displays currently in use. */ |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
125 struct x_display_info *x_display_list; |
286 | 126 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
127 /* This is a list of cons cells, each of the form (NAME . FONT-LIST-CACHE), |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
128 one for each element of x_display_list and in the same order. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
129 NAME is the name of the frame. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
130 FONT-LIST-CACHE records previous values returned by x-list-fonts. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
131 Lisp_Object x_display_name_list; |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
132 |
2474
86c8a6e08fd4
Fix typo in comment delimiter.
Richard M. Stallman <rms@gnu.org>
parents:
2468
diff
changeset
|
133 /* 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
|
134 This is set by update_begin and looked at by all the |
286 | 135 XT functions. It is zero while not inside an update. |
771 | 136 In that case, the XT functions assume that `selected_frame' |
137 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
|
138 extern struct frame *updating_frame; |
771 | 139 |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
140 /* This is a frame waiting to be autoraised, within XTread_socket. */ |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
141 struct frame *pending_autoraise_frame; |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
142 |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
143 #ifdef USE_X_TOOLKIT |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
144 /* The application context for Xt use. */ |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
145 XtAppContext Xt_app_con; |
12494
bfbe2490dbf0
(x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents:
12431
diff
changeset
|
146 |
bfbe2490dbf0
(x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents:
12431
diff
changeset
|
147 static String Xt_default_resources[] = |
bfbe2490dbf0
(x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents:
12431
diff
changeset
|
148 { |
bfbe2490dbf0
(x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents:
12431
diff
changeset
|
149 0 |
bfbe2490dbf0
(x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents:
12431
diff
changeset
|
150 }; |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
151 #endif |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
152 |
286 | 153 /* During an update, maximum vpos for ins/del line operations to affect. */ |
154 | |
155 static int flexlines; | |
156 | |
157 /* During an update, nonzero if chars output now should be highlighted. */ | |
158 | |
159 static int highlight; | |
160 | |
161 /* Nominal cursor position -- where to draw output. | |
162 During an update, these are different from the cursor-box position. */ | |
163 | |
164 static int curs_x; | |
165 static int curs_y; | |
166 | |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
167 /* Mouse movement. |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
168 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
169 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
|
170 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
|
171 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
|
172 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
|
173 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
|
174 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
|
175 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
|
176 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
|
177 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
|
178 is off. |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
179 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
180 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
|
181 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
|
182 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
|
183 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
|
184 the server, which is very important. */ |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
185 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
186 /* 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
|
187 static FRAME_PTR last_mouse_frame; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
188 static XRectangle last_mouse_glyph; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
189 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
190 /* 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
|
191 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
192 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
|
193 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
|
194 an ordinary motion. |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
195 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
196 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
|
197 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
|
198 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
|
199 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
200 /* 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
|
201 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
|
202 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
|
203 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
|
204 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
|
205 it's somewhat accurate. */ |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
206 static Time last_mouse_movement_time; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
207 |
9337
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
208 /* Incremented by XTread_socket whenever it really tries to read events. */ |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
209 #ifdef __STDC__ |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
210 static int volatile input_signal_count; |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
211 #else |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
212 static int input_signal_count; |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
213 #endif |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
214 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
215 /* Used locally within XTread_socket. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
216 static int x_noop_count; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
217 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
218 /* Initial values of argv and argc. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
219 extern char **initial_argv; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
220 extern int initial_argc; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
221 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
222 extern Lisp_Object Vcommand_line_args, Vsystem_name; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
223 |
286 | 224 /* Tells if a window manager is present or not. */ |
225 | |
226 extern Lisp_Object Vx_no_window_manager; | |
227 | |
6941
a914781ef58a
(Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents:
6934
diff
changeset
|
228 extern Lisp_Object Qface, Qmouse_face; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
229 |
286 | 230 extern int errno; |
231 | |
2661
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
232 /* 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
|
233 extern int extra_keyboard_modifiers; |
338e4ffdb54b
(XTread_socket): Support extra_keyboard_modifiers.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
234 |
11807
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
235 static Lisp_Object Qvendor_specific_keysyms; |
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
236 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
237 extern XrmDatabase x_load_resources (); |
286 | 238 |
11915
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
239 extern Lisp_Object x_icon_type (); |
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
240 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
241 void x_delete_display (); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
242 |
4277
c3fbb9249f5b
(redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4244
diff
changeset
|
243 static void redraw_previous_char (); |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
244 static void redraw_following_char (); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
245 static unsigned int x_x_to_emacs_modifiers (); |
286 | 246 |
7282
2bc4929691e9
(show_mouse_face): Fix test for cursor in highlighted area.
Karl Heuer <kwzh@gnu.org>
parents:
7264
diff
changeset
|
247 static int fast_find_position (); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
248 static void note_mouse_highlight (); |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
249 static void clear_mouse_face (); |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
250 static void show_mouse_face (); |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
251 static void do_line_dance (); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
252 |
621 | 253 static int XTcursor_to (); |
254 static int XTclear_end_of_line (); | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
255 static int x_io_error_quitter (); |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
256 void x_catch_errors (); |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
257 void x_uncatch_errors (); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
258 |
12192
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
259 #if 0 |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
260 /* This is a function useful for recording debugging information |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
261 about the sequence of occurrences in this file. */ |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
262 |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
263 struct record |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
264 { |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
265 char *locus; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
266 int type; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
267 }; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
268 |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
269 struct record event_record[100]; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
270 |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
271 int event_record_index; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
272 |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
273 record_event (locus, type) |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
274 char *locus; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
275 int type; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
276 { |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
277 if (event_record_index == sizeof (event_record) / sizeof (struct record)) |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
278 event_record_index = 0; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
279 |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
280 event_record[event_record_index].locus = locus; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
281 event_record[event_record_index].type = type; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
282 event_record_index++; |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
283 } |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
284 |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
285 #endif /* 0 */ |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
286 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
287 /* Return the struct x_display_info corresponding to DPY. */ |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
288 |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
289 struct x_display_info * |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
290 x_display_info_for_display (dpy) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
291 Display *dpy; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
292 { |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
293 struct x_display_info *dpyinfo; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
294 |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
295 for (dpyinfo = x_display_list; dpyinfo; dpyinfo = dpyinfo->next) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
296 if (dpyinfo->display == dpy) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
297 return dpyinfo; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
298 |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
299 return 0; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
300 } |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
301 |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
302 /* Starting and ending updates. |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
303 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
304 These hooks are called by update_frame at the beginning and end |
771 | 305 of a frame update. We record in `updating_frame' the identity |
306 of the frame being updated, so that the XT... functions do not | |
307 need to take a frame as argument. Most of the XT... functions | |
286 | 308 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
|
309 being XTcursor_to, XTwrite_glyphs and XTreassert_line_highlight. */ |
286 | 310 |
311 static | |
771 | 312 XTupdate_begin (f) |
313 struct frame *f; | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
314 { |
286 | 315 int mask; |
316 | |
771 | 317 if (f == 0) |
286 | 318 abort (); |
319 | |
771 | 320 flexlines = f->height; |
286 | 321 highlight = 0; |
322 | |
323 BLOCK_INPUT; | |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
324 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
325 if (f == FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_frame) |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
326 { |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
327 /* Don't do highlighting for mouse motion during the update. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
328 FRAME_X_DISPLAY_INFO (f)->mouse_face_defer = 1; |
10223
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
329 |
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
330 /* If the frame needs to be redrawn, |
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
331 simply forget about any prior mouse highlighting. */ |
10274
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
332 if (FRAME_GARBAGED_P (f)) |
10223
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
333 FRAME_X_DISPLAY_INFO (f)->mouse_face_window = Qnil; |
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
334 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
335 if (!NILP (FRAME_X_DISPLAY_INFO (f)->mouse_face_window)) |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
336 { |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
337 int firstline, lastline, i; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
338 struct window *w = XWINDOW (FRAME_X_DISPLAY_INFO (f)->mouse_face_window); |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
339 |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
340 /* Find the first, and the last+1, lines affected by redisplay. */ |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
341 for (firstline = 0; firstline < f->height; firstline++) |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
342 if (FRAME_DESIRED_GLYPHS (f)->enable[firstline]) |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
343 break; |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
344 |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
345 lastline = f->height; |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
346 for (i = f->height - 1; i >= 0; i--) |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
347 { |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
348 if (FRAME_DESIRED_GLYPHS (f)->enable[i]) |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
349 break; |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
350 else |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
351 lastline = i; |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
352 } |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
353 |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
354 /* Can we tell that this update does not affect the window |
10223
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
355 where the mouse highlight is? If so, no need to turn off. |
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
356 Likewise, don't do anything if the frame is garbaged; |
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
357 in that case, the FRAME_CURRENT_GLYPHS that we would use |
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
358 are all wrong, and we will redisplay that line anyway. */ |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
359 if (! (firstline > (XFASTINT (w->top) + window_internal_height (w)) |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
360 || lastline < XFASTINT (w->top))) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
361 clear_mouse_face (FRAME_X_DISPLAY_INFO (f)); |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
362 } |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
363 } |
8781
98741404d3e0
Delete X11 conditionals.
Richard M. Stallman <rms@gnu.org>
parents:
8724
diff
changeset
|
364 |
286 | 365 UNBLOCK_INPUT; |
366 } | |
367 | |
368 static | |
771 | 369 XTupdate_end (f) |
370 struct frame *f; | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
371 { |
286 | 372 int mask; |
373 | |
374 BLOCK_INPUT; | |
375 | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
376 do_line_dance (); |
771 | 377 x_display_cursor (f, 1); |
378 | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
379 if (f == FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_frame) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
380 FRAME_X_DISPLAY_INFO (f)->mouse_face_defer = 0; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
381 #if 0 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
382 /* 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
|
383 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
|
384 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
|
385 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
|
386 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
|
387 for that case. window_end_valid isn't set up yet. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
388 if (f == FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_frame) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
389 note_mouse_highlight (f, FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_x, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
390 FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_y); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
391 #endif |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
392 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
393 XFlush (FRAME_X_DISPLAY (f)); |
286 | 394 UNBLOCK_INPUT; |
395 } | |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
396 |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
397 /* This is called after a redisplay on frame F. */ |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
398 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
399 static |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
400 XTframe_up_to_date (f) |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
401 FRAME_PTR f; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
402 { |
13633
3fa66bb82d59
(XTframe_up_to_date): Block and unblock input.
Richard M. Stallman <rms@gnu.org>
parents:
13627
diff
changeset
|
403 BLOCK_INPUT; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
404 if (FRAME_X_DISPLAY_INFO (f)->mouse_face_deferred_gc |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
405 || f == FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_frame) |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
406 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
407 note_mouse_highlight (FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_frame, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
408 FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_x, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
409 FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_y); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
410 FRAME_X_DISPLAY_INFO (f)->mouse_face_deferred_gc = 0; |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
411 } |
13633
3fa66bb82d59
(XTframe_up_to_date): Block and unblock input.
Richard M. Stallman <rms@gnu.org>
parents:
13627
diff
changeset
|
412 UNBLOCK_INPUT; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
413 } |
286 | 414 |
415 /* External interface to control of standout mode. | |
416 Call this when about to modify line at position VPOS | |
417 and not change whether it is highlighted. */ | |
418 | |
419 XTreassert_line_highlight (new, vpos) | |
420 int new, vpos; | |
421 { | |
422 highlight = new; | |
423 } | |
424 | |
425 /* Call this when about to modify line at position VPOS | |
426 and change whether it is highlighted. */ | |
427 | |
428 static | |
429 XTchange_line_highlight (new_highlight, vpos, first_unused_hpos) | |
430 int new_highlight, vpos, first_unused_hpos; | |
431 { | |
432 highlight = new_highlight; | |
433 XTcursor_to (vpos, 0); | |
771 | 434 XTclear_end_of_line (updating_frame->width); |
286 | 435 } |
436 | |
437 /* This is used when starting Emacs and when restarting after suspend. | |
438 When starting Emacs, no X window is mapped. And nothing must be done | |
439 to Emacs's own window if it is suspended (though that rarely happens). */ | |
440 | |
441 static | |
442 XTset_terminal_modes () | |
443 { | |
444 } | |
445 | |
446 /* This is called when exiting or suspending Emacs. | |
447 Exiting will make the X-windows go away, and suspending | |
448 requires no action. */ | |
449 | |
450 static | |
451 XTreset_terminal_modes () | |
452 { | |
771 | 453 /* XTclear_frame (); */ |
286 | 454 } |
455 | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
456 /* 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
|
457 This is where display update commands will take effect. |
286 | 458 This does not affect the place where the cursor-box is displayed. */ |
459 | |
621 | 460 static int |
286 | 461 XTcursor_to (row, col) |
462 register int row, col; | |
463 { | |
464 int mask; | |
465 int orow = row; | |
466 | |
467 curs_x = col; | |
468 curs_y = row; | |
469 | |
771 | 470 if (updating_frame == 0) |
286 | 471 { |
472 BLOCK_INPUT; | |
771 | 473 x_display_cursor (selected_frame, 1); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
474 XFlush (FRAME_X_DISPLAY (selected_frame)); |
286 | 475 UNBLOCK_INPUT; |
476 } | |
477 } | |
478 | |
479 /* Display a sequence of N glyphs found at GP. | |
480 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
|
481 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
|
482 3 if should appear in its mouse-face. |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
483 JUST_FOREGROUND if 1 means draw only the foreground; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
484 don't alter the background. |
286 | 485 |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
486 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
|
487 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
488 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
|
489 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
|
490 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
|
491 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
|
492 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
|
493 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
|
494 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
495 #if 1 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
496 /* 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
|
497 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
498 static void |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
499 dumpglyphs (f, left, top, gp, n, hl, just_foreground) |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
500 struct frame *f; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
501 int left, top; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
502 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
|
503 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
|
504 int hl; |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
505 int just_foreground; |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
506 { |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
507 /* Holds characters to be displayed. */ |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
508 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
|
509 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
|
510 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
|
511 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
|
512 Window window = FRAME_X_WINDOW (f); |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
513 int orig_left = left; |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
514 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
515 while (n > 0) |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
516 { |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
517 /* 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
|
518 int cf, len; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
519 int g = *gp; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
520 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
521 GLYPH_FOLLOW_ALIASES (tbase, tlen, g); |
6413
6eb1a3cf0371
(dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents:
6356
diff
changeset
|
522 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
|
523 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
524 /* 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
|
525 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
|
526 cp = buf; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
527 while (n > 0) |
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 g = *gp; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
530 GLYPH_FOLLOW_ALIASES (tbase, tlen, g); |
6413
6eb1a3cf0371
(dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents:
6356
diff
changeset
|
531 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
|
532 break; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
533 |
6413
6eb1a3cf0371
(dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents:
6356
diff
changeset
|
534 *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
|
535 --n; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
536 ++gp; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
537 } |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
538 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
539 /* 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
|
540 len = cp - buf; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
541 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
542 /* 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
|
543 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
|
544 { |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
545 struct face *face = FRAME_DEFAULT_FACE (f); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
546 XFontStruct *font = FACE_FONT (face); |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
547 GC gc = FACE_GC (face); |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
548 int stippled = 0; |
2840
12299f73584e
(dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents:
2785
diff
changeset
|
549 |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
550 /* 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
|
551 if (hl == 3) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
552 cf = FRAME_X_DISPLAY_INFO (f)->mouse_face_face_id; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
553 |
2840
12299f73584e
(dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents:
2785
diff
changeset
|
554 /* 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
|
555 if (cf != 0) |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
556 { |
5719
d3074ff90741
(dumpglyphs): Don't crash for invalid face code.
Richard M. Stallman <rms@gnu.org>
parents:
5686
diff
changeset
|
557 /* 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
|
558 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
|
559 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
|
560 || 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
|
561 cf = 0; |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
562 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
563 if (cf == 1) |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
564 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
|
565 else |
3883
b9e5a869b33e
Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents:
3839
diff
changeset
|
566 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
|
567 font = FACE_FONT (face); |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
568 gc = FACE_GC (face); |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
569 if (FACE_STIPPLE (face)) |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
570 stippled = 1; |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
571 } |
2785
55e9c556bbf8
* xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents:
2732
diff
changeset
|
572 |
55e9c556bbf8
* xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents:
2732
diff
changeset
|
573 /* 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
|
574 else if (hl == 0) |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
575 ; |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
576 else if (hl == 1) |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
577 { |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
578 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
|
579 font = FACE_FONT (face); |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
580 gc = FACE_GC (face); |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
581 if (FACE_STIPPLE (face)) |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
582 stippled = 1; |
2840
12299f73584e
(dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents:
2785
diff
changeset
|
583 } |
12299f73584e
(dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents:
2785
diff
changeset
|
584 |
12299f73584e
(dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents:
2785
diff
changeset
|
585 #define FACE_DEFAULT (~0) |
12299f73584e
(dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents:
2785
diff
changeset
|
586 |
12299f73584e
(dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents:
2785
diff
changeset
|
587 /* 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
|
588 if (hl == 2) |
2840
12299f73584e
(dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents:
2785
diff
changeset
|
589 { |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
590 /* The cursor overrides stippling. */ |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
591 stippled = 0; |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
592 |
7935
f15e1a058e93
(scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7916
diff
changeset
|
593 if ((!face->font |
11259
81f5d9eb1484
(dumpglyphs): Cast FACE_DEFAULT to (XFontStruct *)
Richard M. Stallman <rms@gnu.org>
parents:
11235
diff
changeset
|
594 || face->font == (XFontStruct *) FACE_DEFAULT |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
595 || face->font == f->output_data.x->font) |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
596 && face->background == f->output_data.x->background_pixel |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
597 && face->foreground == f->output_data.x->foreground_pixel) |
3076
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
598 { |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
599 gc = f->output_data.x->cursor_gc; |
3076
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
600 } |
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
601 /* 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
|
602 else |
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
603 { |
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
604 XGCValues xgcv; |
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
605 unsigned long mask; |
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
606 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
607 xgcv.background = f->output_data.x->cursor_pixel; |
7935
f15e1a058e93
(scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7916
diff
changeset
|
608 xgcv.foreground = face->background; |
5987
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
609 /* If the glyph would be invisible, |
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
610 try a different foreground. */ |
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
611 if (xgcv.foreground == xgcv.background) |
7469
24b292242269
(dumpglyphs): For cursor foreground, try the
Richard M. Stallman <rms@gnu.org>
parents:
7415
diff
changeset
|
612 xgcv.foreground = face->foreground; |
5987
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
613 if (xgcv.foreground == xgcv.background) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
614 xgcv.foreground = f->output_data.x->cursor_foreground_pixel; |
5987
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
615 if (xgcv.foreground == xgcv.background) |
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
616 xgcv.foreground = face->foreground; |
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
617 /* 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
|
618 if (xgcv.background == face->background |
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
619 && xgcv.foreground == face->foreground) |
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
620 { |
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
621 xgcv.background = face->foreground; |
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
622 xgcv.foreground = face->background; |
040bdc2fec7c
(dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents:
5986
diff
changeset
|
623 } |
3076
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
624 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
|
625 xgcv.graphics_exposures = 0; |
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
626 mask = GCForeground | GCBackground | GCFont | GCGraphicsExposures; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
627 if (FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
628 XChangeGC (FRAME_X_DISPLAY (f), |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
629 FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
630 mask, &xgcv); |
7935
f15e1a058e93
(scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7916
diff
changeset
|
631 else |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
632 FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
633 = XCreateGC (FRAME_X_DISPLAY (f), window, mask, &xgcv); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
634 gc = FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc; |
2840
12299f73584e
(dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents:
2785
diff
changeset
|
635 #if 0 |
7935
f15e1a058e93
(scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7916
diff
changeset
|
636 /* If this code is restored, it must also reset to the default stipple |
f15e1a058e93
(scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7916
diff
changeset
|
637 if necessary. */ |
3076
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
638 if (face->stipple && face->stipple != FACE_DEFAULT) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
639 XSetStipple (FRAME_X_DISPLAY (f), gc, face->stipple); |
2840
12299f73584e
(dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents:
2785
diff
changeset
|
640 #endif |
3076
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
641 } |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
642 } |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
643 |
11259
81f5d9eb1484
(dumpglyphs): Cast FACE_DEFAULT to (XFontStruct *)
Richard M. Stallman <rms@gnu.org>
parents:
11235
diff
changeset
|
644 if (font == (XFontStruct *) FACE_DEFAULT) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
645 font = f->output_data.x->font; |
3076
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
646 |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
647 if (just_foreground) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
648 XDrawString (FRAME_X_DISPLAY (f), window, gc, |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
649 left, top + FONT_BASE (font), buf, len); |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
650 else |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
651 { |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
652 if (stippled) |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
653 { |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
654 /* Turn stipple on. */ |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
655 XSetFillStyle (FRAME_X_DISPLAY (f), gc, FillOpaqueStippled); |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
656 |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
657 /* Draw stipple on background. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
658 XFillRectangle (FRAME_X_DISPLAY (f), window, gc, |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
659 left, top, |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
660 FONT_WIDTH (font) * len, |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
661 FONT_HEIGHT (font)); |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
662 |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
663 /* Turn stipple off. */ |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
664 XSetFillStyle (FRAME_X_DISPLAY (f), gc, FillSolid); |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
665 |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
666 /* Draw the text, solidly, onto the stipple pattern. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
667 XDrawString (FRAME_X_DISPLAY (f), window, gc, |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
668 left, top + FONT_BASE (font), buf, len); |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
669 } |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
670 else |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
671 XDrawImageString (FRAME_X_DISPLAY (f), window, gc, |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
672 left, top + FONT_BASE (font), buf, len); |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
673 |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
674 /* Clear the rest of the line's height. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
675 if (f->output_data.x->line_height != FONT_HEIGHT (font)) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
676 XClearArea (FRAME_X_DISPLAY (f), window, left, |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
677 top + FONT_HEIGHT (font), |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
678 FONT_WIDTH (font) * len, |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
679 /* This is how many pixels of height |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
680 we have to clear. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
681 f->output_data.x->line_height - FONT_HEIGHT (font), |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
682 False); |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
683 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
684 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
685 #if 0 /* Doesn't work, because it uses FRAME_CURRENT_GLYPHS, |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
686 which often is not up to date yet. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
687 if (!just_foreground) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
688 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
689 if (left == orig_left) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
690 redraw_previous_char (f, PIXEL_TO_CHAR_COL (f, left), |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
691 PIXEL_TO_CHAR_ROW (f, top), hl == 1); |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
692 if (n == 0) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
693 redraw_following_char (f, PIXEL_TO_CHAR_COL (f, left + len * FONT_WIDTH (font)), |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
694 PIXEL_TO_CHAR_ROW (f, top), hl == 1); |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
695 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
696 #endif |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
697 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
698 /* 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
|
699 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
|
700 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
|
701 { |
2785
55e9c556bbf8
* xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents:
2732
diff
changeset
|
702 int underline_position = 1; |
55e9c556bbf8
* xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents:
2732
diff
changeset
|
703 |
55e9c556bbf8
* xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents:
2732
diff
changeset
|
704 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
|
705 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
|
706 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
707 if (face->underline) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
708 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
709 FACE_GC (face), |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
710 left, (top |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
711 + FONT_BASE (font) |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
712 + underline_position), |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
713 len * FONT_WIDTH (font), 1); |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
714 } |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
715 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
716 left += len * FONT_WIDTH (font); |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
717 } |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
718 } |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
719 } |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
720 #endif /* 1 */ |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
721 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
722 #if 0 |
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
723 /* This is the old single-face code. */ |
286 | 724 |
725 static void | |
771 | 726 dumpglyphs (f, left, top, gp, n, hl, font) |
727 struct frame *f; | |
286 | 728 int left, top; |
729 register GLYPH *gp; /* Points to first GLYPH. */ | |
730 register int n; /* Number of glyphs to display. */ | |
731 int hl; | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
732 XFontStruct *font; |
286 | 733 { |
734 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
|
735 Window window = FRAME_X_WINDOW (f); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
736 GC drawing_gc = (hl == 2 ? f->output_data.x->cursor_gc |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
737 : (hl ? f->output_data.x->reverse_gc |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
738 : f->output_data.x->normal_gc)); |
286 | 739 |
313 | 740 if (sizeof (GLYPH) == sizeof (XChar2b)) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
741 XDrawImageString16 (FRAME_X_DISPLAY (f), window, drawing_gc, |
313 | 742 left, top + FONT_BASE (font), (XChar2b *) gp, n); |
743 else if (sizeof (GLYPH) == sizeof (unsigned char)) | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
744 XDrawImageString (FRAME_X_DISPLAY (f), window, drawing_gc, |
313 | 745 left, top + FONT_BASE (font), (char *) gp, n); |
746 else | |
747 /* What size of glyph ARE you using? And does X have a function to | |
748 draw them? */ | |
749 abort (); | |
286 | 750 } |
2732
8b55aa587d3c
* xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents:
2661
diff
changeset
|
751 #endif |
286 | 752 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
753 /* 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
|
754 Advance the cursor over the text. |
286 | 755 Output LEN glyphs at START. |
756 | |
757 `highlight', set up by XTreassert_line_highlight or XTchange_line_highlight, | |
758 controls the pixel values used for foreground and background. */ | |
759 | |
760 static | |
761 XTwrite_glyphs (start, len) | |
762 register GLYPH *start; | |
763 int len; | |
764 { | |
765 register int temp_length; | |
766 int mask; | |
771 | 767 struct frame *f; |
286 | 768 |
769 BLOCK_INPUT; | |
770 | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
771 do_line_dance (); |
771 | 772 f = updating_frame; |
773 if (f == 0) | |
286 | 774 { |
771 | 775 f = selected_frame; |
286 | 776 /* If not within an update, |
771 | 777 output at the frame's visible cursor. */ |
778 curs_x = f->cursor_x; | |
779 curs_y = f->cursor_y; | |
286 | 780 } |
781 | |
771 | 782 dumpglyphs (f, |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
783 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
|
784 CHAR_TO_PIXEL_ROW (f, curs_y), |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
785 start, len, highlight, 0); |
429 | 786 |
787 /* If we drew on top of the cursor, note that it is turned off. */ | |
771 | 788 if (curs_y == f->phys_cursor_y |
789 && curs_x <= f->phys_cursor_x | |
790 && curs_x + len > f->phys_cursor_x) | |
791 f->phys_cursor_x = -1; | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
792 |
771 | 793 if (updating_frame == 0) |
286 | 794 { |
771 | 795 f->cursor_x += len; |
796 x_display_cursor (f, 1); | |
797 f->cursor_x -= len; | |
286 | 798 } |
799 else | |
800 curs_x += len; | |
801 | |
802 UNBLOCK_INPUT; | |
803 } | |
804 | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
805 /* 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
|
806 Erase the current text line from the nominal cursor position (inclusive) |
286 | 807 to column FIRST_UNUSED (exclusive). The idea is that everything |
808 from FIRST_UNUSED onward is already erased. */ | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
809 |
11915
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
810 static |
286 | 811 XTclear_end_of_line (first_unused) |
812 register int first_unused; | |
813 { | |
771 | 814 struct frame *f = updating_frame; |
286 | 815 int mask; |
816 | |
771 | 817 if (f == 0) |
286 | 818 abort (); |
819 | |
771 | 820 if (curs_y < 0 || curs_y >= f->height) |
286 | 821 return; |
822 if (first_unused <= 0) | |
823 return; | |
824 | |
771 | 825 if (first_unused >= f->width) |
826 first_unused = f->width; | |
286 | 827 |
828 BLOCK_INPUT; | |
829 | |
9763
296cd41d2601
(XTclear_end_of_line): Finish the line dance here too, just as was done in
Karl Heuer <kwzh@gnu.org>
parents:
9762
diff
changeset
|
830 do_line_dance (); |
296cd41d2601
(XTclear_end_of_line): Finish the line dance here too, just as was done in
Karl Heuer <kwzh@gnu.org>
parents:
9762
diff
changeset
|
831 |
429 | 832 /* Notice if the cursor will be cleared by this operation. */ |
771 | 833 if (curs_y == f->phys_cursor_y |
834 && curs_x <= f->phys_cursor_x | |
835 && f->phys_cursor_x < first_unused) | |
836 f->phys_cursor_x = -1; | |
286 | 837 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
838 XClearArea (FRAME_X_DISPLAY (f), 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
|
839 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
|
840 CHAR_TO_PIXEL_ROW (f, curs_y), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
841 FONT_WIDTH (f->output_data.x->font) * (first_unused - curs_x), |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
842 f->output_data.x->line_height, False); |
4277
c3fbb9249f5b
(redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4244
diff
changeset
|
843 #if 0 |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
844 redraw_previous_char (f, curs_x, curs_y, highlight); |
4277
c3fbb9249f5b
(redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4244
diff
changeset
|
845 #endif |
286 | 846 |
847 UNBLOCK_INPUT; | |
848 } | |
849 | |
850 static | |
771 | 851 XTclear_frame () |
286 | 852 { |
853 int mask; | |
771 | 854 struct frame *f = updating_frame; |
855 | |
856 if (f == 0) | |
857 f = selected_frame; | |
858 | |
859 f->phys_cursor_x = -1; /* Cursor not visible. */ | |
286 | 860 curs_x = 0; /* Nominal cursor position is top left. */ |
861 curs_y = 0; | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
862 |
286 | 863 BLOCK_INPUT; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
864 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
865 XClearWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f)); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
866 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
867 /* 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
|
868 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
|
869 x_scroll_bar_clear (f); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
870 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
871 XFlush (FRAME_X_DISPLAY (f)); |
286 | 872 UNBLOCK_INPUT; |
873 } | |
874 | |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
875 #if 0 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
876 /* This currently does not work because FRAME_CURRENT_GLYPHS doesn't |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
877 always contain the right glyphs to use. |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
878 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
879 It also needs to be changed to look at the details of the font and |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
880 see whether there is really overlap, and do nothing when there is |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
881 not. This can use font_char_overlap_left and font_char_overlap_right, |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
882 but just how to use them is not clear. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
883 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
884 /* Erase the character (if any) at the position just before X, Y in frame F, |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
885 then redraw it and the character before it. |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
886 This is necessary when we erase starting at X, |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
887 in case the character after X overlaps into the one before X. |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
888 Call this function with input blocked. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
889 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
890 static void |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
891 redraw_previous_char (f, x, y, highlight_flag) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
892 FRAME_PTR f; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
893 int x, y; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
894 int highlight_flag; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
895 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
896 /* Erase the character before the new ones, in case |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
897 what was here before overlaps it. |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
898 Reoutput that character, and the previous character |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
899 (in case the previous character overlaps it). */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
900 if (x > 0) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
901 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
902 int start_x = x - 2; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
903 if (start_x < 0) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
904 start_x = 0; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
905 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
906 CHAR_TO_PIXEL_COL (f, x - 1), |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
907 CHAR_TO_PIXEL_ROW (f, y), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
908 FONT_WIDTH (f->output_data.x->font), |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
909 f->output_data.x->line_height, False); |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
910 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
911 dumpglyphs (f, CHAR_TO_PIXEL_COL (f, start_x), |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
912 CHAR_TO_PIXEL_ROW (f, y), |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
913 &FRAME_CURRENT_GLYPHS (f)->glyphs[y][start_x], |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
914 x - start_x, highlight_flag, 1); |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
915 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
916 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
917 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
918 /* Erase the character (if any) at the position X, Y in frame F, |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
919 then redraw it and the character after it. |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
920 This is necessary when we erase endng at X, |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
921 in case the character after X overlaps into the one before X. |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
922 Call this function with input blocked. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
923 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
924 static void |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
925 redraw_following_char (f, x, y, highlight_flag) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
926 FRAME_PTR f; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
927 int x, y; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
928 int highlight_flag; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
929 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
930 int limit = FRAME_CURRENT_GLYPHS (f)->used[y]; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
931 /* Erase the character after the new ones, in case |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
932 what was here before overlaps it. |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
933 Reoutput that character, and the following character |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
934 (in case the following character overlaps it). */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
935 if (x < limit |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
936 && FRAME_CURRENT_GLYPHS (f)->glyphs[y][x] != SPACEGLYPH) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
937 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
938 int end_x = x + 2; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
939 if (end_x > limit) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
940 end_x = limit; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
941 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
942 CHAR_TO_PIXEL_COL (f, x), |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
943 CHAR_TO_PIXEL_ROW (f, y), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
944 FONT_WIDTH (f->output_data.x->font), |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
945 f->output_data.x->line_height, False); |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
946 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
947 dumpglyphs (f, CHAR_TO_PIXEL_COL (f, x), |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
948 CHAR_TO_PIXEL_ROW (f, y), |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
949 &FRAME_CURRENT_GLYPHS (f)->glyphs[y][x], |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
950 end_x - x, highlight_flag, 1); |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
951 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
952 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
953 #endif /* 0 */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
954 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
955 #if 0 /* Not in use yet */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
956 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
957 /* Return 1 if character C in font F extends past its left edge. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
958 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
959 static int |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
960 font_char_overlap_left (font, c) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
961 XFontStruct *font; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
962 int c; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
963 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
964 XCharStruct *s; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
965 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
966 /* Find the bounding-box info for C. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
967 if (font->per_char == 0) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
968 s = &font->max_bounds; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
969 else |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
970 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
971 int rowlen = font->max_char_or_byte2 - font->min_char_or_byte2 + 1; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
972 int row, within; |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
973 |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
974 /* Decode char into row number (byte 1) and code within row (byte 2). */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
975 row = c >> 8; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
976 within = c & 0177; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
977 if (!(within >= font->min_char_or_byte2 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
978 && within <= font->max_char_or_byte2 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
979 && row >= font->min_byte1 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
980 && row <= font->max_byte1)) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
981 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
982 /* If char is out of range, try the font's default char instead. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
983 c = font->default_char; |
13363
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13232
diff
changeset
|
984 row = c >> (BITS_PER_INT - 8); |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
985 within = c & 0177; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
986 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
987 if (!(within >= font->min_char_or_byte2 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
988 && within <= font->max_char_or_byte2 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
989 && row >= font->min_byte1 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
990 && row <= font->max_byte1)) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
991 /* Still out of range means this char does not overlap. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
992 return 0; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
993 else |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
994 /* We found the info for this char. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
995 s = (font->per_char + (within - font->min_char_or_byte2) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
996 + row * rowlen); |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
997 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
998 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
999 return (s && s->lbearing < 0); |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1000 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1001 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1002 /* Return 1 if character C in font F extends past its right edge. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1003 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1004 static int |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1005 font_char_overlap_right (font, c) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1006 XFontStruct *font; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1007 int c; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1008 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1009 XCharStruct *s; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1010 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1011 /* Find the bounding-box info for C. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1012 if (font->per_char == 0) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1013 s = &font->max_bounds; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1014 else |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1015 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1016 int rowlen = font->max_char_or_byte2 - font->min_char_or_byte2 + 1; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1017 int row, within; |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1018 |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1019 /* Decode char into row number (byte 1) and code within row (byte 2). */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1020 row = c >> 8; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1021 within = c & 0177; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1022 if (!(within >= font->min_char_or_byte2 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1023 && within <= font->max_char_or_byte2 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1024 && row >= font->min_byte1 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1025 && row <= font->max_byte1)) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1026 { |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1027 /* If char is out of range, try the font's default char instead. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1028 c = font->default_char; |
13363
941c37982f37
(BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents:
13232
diff
changeset
|
1029 row = c >> (BITS_PER_INT - 8); |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1030 within = c & 0177; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1031 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1032 if (!(within >= font->min_char_or_byte2 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1033 && within <= font->max_char_or_byte2 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1034 && row >= font->min_byte1 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1035 && row <= font->max_byte1)) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1036 /* Still out of range means this char does not overlap. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1037 return 0; |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1038 else |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1039 /* We found the info for this char. */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1040 s = (font->per_char + (within - font->min_char_or_byte2) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1041 + row * rowlen); |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1042 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1043 |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1044 return (s && s->rbearing >= s->width); |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1045 } |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1046 #endif /* 0 */ |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1047 |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1048 /* 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
|
1049 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1050 /* 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
|
1051 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
|
1052 #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1053 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1054 /* Subtract the `struct timeval' values X and Y, |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1055 storing the result in RESULT. |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1056 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
|
1057 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1058 static int |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1059 timeval_subtract (result, x, y) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1060 struct timeval *result, x, y; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1061 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1062 /* 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
|
1063 This is safer because on some systems |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1064 the tv_sec member is unsigned. */ |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1065 if (x.tv_usec < y.tv_usec) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1066 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1067 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
|
1068 y.tv_usec -= 1000000 * nsec; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1069 y.tv_sec += nsec; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1070 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1071 if (x.tv_usec - y.tv_usec > 1000000) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1072 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1073 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
|
1074 y.tv_usec += 1000000 * nsec; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1075 y.tv_sec -= nsec; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1076 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1077 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1078 /* 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
|
1079 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
|
1080 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
|
1081 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1082 /* 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
|
1083 return x.tv_sec < y.tv_sec; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1084 } |
286 | 1085 |
771 | 1086 XTflash (f) |
1087 struct frame *f; | |
286 | 1088 { |
1089 BLOCK_INPUT; | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1090 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1091 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1092 GC gc; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1093 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1094 /* 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
|
1095 into background pixels. */ |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1096 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1097 XGCValues values; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1098 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1099 values.function = GXxor; |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1100 values.foreground = (f->output_data.x->foreground_pixel |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1101 ^ f->output_data.x->background_pixel); |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1102 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1103 gc = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1104 GCFunction | GCForeground, &values); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1105 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1106 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1107 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1108 int width = PIXEL_WIDTH (f); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1109 int height = PIXEL_HEIGHT (f); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1110 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1111 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1112 width/4, height/4, width/2, height/2); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1113 XFlush (FRAME_X_DISPLAY (f)); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1114 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1115 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1116 struct timeval wakeup, now; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1117 |
5362
d1fa597d923d
(XTflush): FIx typo in last change.
Richard M. Stallman <rms@gnu.org>
parents:
5357
diff
changeset
|
1118 EMACS_GET_TIME (wakeup); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1119 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1120 /* 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
|
1121 wakeup.tv_usec += 150000; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1122 wakeup.tv_sec += (wakeup.tv_usec / 1000000); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1123 wakeup.tv_usec %= 1000000; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1124 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1125 /* Keep waiting until past the time wakeup. */ |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1126 while (1) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1127 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1128 struct timeval timeout; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1129 |
5362
d1fa597d923d
(XTflush): FIx typo in last change.
Richard M. Stallman <rms@gnu.org>
parents:
5357
diff
changeset
|
1130 EMACS_GET_TIME (timeout); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1131 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1132 /* In effect, timeout = wakeup - timeout. |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1133 Break if result would be negative. */ |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1134 if (timeval_subtract (&timeout, wakeup, timeout)) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1135 break; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1136 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1137 /* Try to wait that long--but we might wake up sooner. */ |
11915
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
1138 select (0, NULL, NULL, NULL, &timeout); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1139 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1140 } |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1141 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1142 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1143 width/4, height/4, width/2, height/2); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1144 XFreeGC (FRAME_X_DISPLAY (f), gc); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1145 XFlush (FRAME_X_DISPLAY (f)); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1146 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1147 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1148 |
286 | 1149 UNBLOCK_INPUT; |
1150 } | |
1151 | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1152 #endif |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1153 |
286 | 1154 |
1155 /* Make audible bell. */ | |
1156 | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1157 #define XRINGBELL XBell (FRAME_X_DISPLAY (selected_frame), 0) |
286 | 1158 |
1159 XTring_bell () | |
1160 { | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1161 if (FRAME_X_DISPLAY (selected_frame) == 0) |
3243
48d20a0b229a
(XTring_bell): Do nothing if x_current_connection is 0.
Richard M. Stallman <rms@gnu.org>
parents:
3218
diff
changeset
|
1162 return; |
48d20a0b229a
(XTring_bell): Do nothing if x_current_connection is 0.
Richard M. Stallman <rms@gnu.org>
parents:
3218
diff
changeset
|
1163 |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1164 #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT) |
286 | 1165 if (visible_bell) |
771 | 1166 XTflash (selected_frame); |
286 | 1167 else |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
1168 #endif |
286 | 1169 { |
1170 BLOCK_INPUT; | |
1171 XRINGBELL; | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1172 XFlush (FRAME_X_DISPLAY (selected_frame)); |
286 | 1173 UNBLOCK_INPUT; |
1174 } | |
1175 } | |
1176 | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1177 /* Insert and delete character. |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1178 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
|
1179 off the feature of using them. */ |
286 | 1180 |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1181 static |
286 | 1182 XTinsert_glyphs (start, len) |
1183 register char *start; | |
1184 register int len; | |
1185 { | |
1186 abort (); | |
1187 } | |
1188 | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1189 static |
286 | 1190 XTdelete_glyphs (n) |
1191 register int n; | |
1192 { | |
1193 abort (); | |
1194 } | |
1195 | |
1196 /* Specify how many text lines, from the top of the window, | |
1197 should be affected by insert-lines and delete-lines operations. | |
1198 This, and those operations, are used only within an update | |
1199 that is bounded by calls to XTupdate_begin and XTupdate_end. */ | |
1200 | |
1201 static | |
1202 XTset_terminal_window (n) | |
1203 register int n; | |
1204 { | |
771 | 1205 if (updating_frame == 0) |
286 | 1206 abort (); |
1207 | |
771 | 1208 if ((n <= 0) || (n > updating_frame->height)) |
1209 flexlines = updating_frame->height; | |
286 | 1210 else |
1211 flexlines = n; | |
1212 } | |
1213 | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1214 /* These variables need not be per frame |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1215 because redisplay is done on a frame-by-frame basis |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1216 and the line dance for one frame is finished before |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1217 anything is done for anoter frame. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1218 |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1219 /* Array of line numbers from cached insert/delete operations. |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1220 line_dance[i] is the old position of the line that we want |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1221 to move to line i, or -1 if we want a blank line there. */ |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1222 static int *line_dance; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1223 |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1224 /* Allocated length of that array. */ |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1225 static int line_dance_len; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1226 |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1227 /* Flag indicating whether we've done any work. */ |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1228 static int line_dance_in_progress; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1229 |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1230 /* Perform an insert-lines or delete-lines operation, |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1231 inserting N lines or deleting -N lines at vertical position VPOS. */ |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1232 XTins_del_lines (vpos, n) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1233 int vpos, n; |
286 | 1234 { |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1235 register int fence, i; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1236 |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1237 if (vpos >= flexlines) |
286 | 1238 return; |
1239 | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1240 if (!line_dance_in_progress) |
286 | 1241 { |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1242 int ht = updating_frame->height; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1243 if (ht > line_dance_len) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1244 { |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1245 line_dance = (int *)xrealloc (line_dance, ht * sizeof (int)); |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1246 line_dance_len = ht; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1247 } |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1248 for (i = 0; i < ht; ++i) line_dance[i] = i; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1249 line_dance_in_progress = 1; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1250 } |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1251 if (n >= 0) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1252 { |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1253 if (n > flexlines - vpos) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1254 n = flexlines - vpos; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1255 fence = vpos + n; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1256 for (i = flexlines; --i >= fence;) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1257 line_dance[i] = line_dance[i-n]; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1258 for (i = fence; --i >= vpos;) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1259 line_dance[i] = -1; |
286 | 1260 } |
1261 else | |
1262 { | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1263 n = -n; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1264 if (n > flexlines - vpos) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1265 n = flexlines - vpos; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1266 fence = flexlines - n; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1267 for (i = vpos; i < fence; ++i) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1268 line_dance[i] = line_dance[i + n]; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1269 for (i = fence; i < flexlines; ++i) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1270 line_dance[i] = -1; |
286 | 1271 } |
1272 } | |
1273 | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1274 /* Here's where we actually move the pixels around. |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1275 Must be called with input blocked. */ |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1276 static void |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1277 do_line_dance () |
286 | 1278 { |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1279 register int i, j, distance; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1280 register struct frame *f; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1281 int ht; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1282 int intborder; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1283 |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1284 /* Must check this flag first. If it's not set, then not only is the |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1285 array uninitialized, but we might not even have a frame. */ |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1286 if (!line_dance_in_progress) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1287 return; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1288 |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1289 f = updating_frame; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1290 if (f == 0) |
286 | 1291 abort (); |
1292 | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1293 ht = f->height; |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1294 intborder = f->output_data.x->internal_border_width; |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1295 |
771 | 1296 x_display_cursor (updating_frame, 0); |
286 | 1297 |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1298 for (i = 0; i < ht; ++i) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1299 if (line_dance[i] != -1 && (distance = line_dance[i]-i) > 0) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1300 { |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1301 for (j = i; (j < ht && line_dance[j] != -1 |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1302 && line_dance[j]-j == distance); ++j); |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1303 /* Copy [i,j) upward from [i+distance,j+distance) */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1304 XCopyArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1305 FRAME_X_WINDOW (f), f->output_data.x->normal_gc, |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1306 intborder, CHAR_TO_PIXEL_ROW (f, i+distance), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1307 f->width * FONT_WIDTH (f->output_data.x->font), |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1308 (j-i) * f->output_data.x->line_height, |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1309 intborder, CHAR_TO_PIXEL_ROW (f, i)); |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1310 i = j-1; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1311 } |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1312 |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1313 for (i = ht; --i >=0; ) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1314 if (line_dance[i] != -1 && (distance = line_dance[i]-i) < 0) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1315 { |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1316 for (j = i; (--j >= 0 && line_dance[j] != -1 |
9577
3bf81e215f18
(do_line_dance): Decrement index only once per loop.
Karl Heuer <kwzh@gnu.org>
parents:
9572
diff
changeset
|
1317 && line_dance[j]-j == distance);); |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1318 /* Copy (j,i] downward from (j+distance, i+distance] */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1319 XCopyArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1320 FRAME_X_WINDOW (f), f->output_data.x->normal_gc, |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1321 intborder, CHAR_TO_PIXEL_ROW (f, j+1+distance), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1322 f->width * FONT_WIDTH (f->output_data.x->font), |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1323 (i-j) * f->output_data.x->line_height, |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1324 intborder, CHAR_TO_PIXEL_ROW (f, j+1)); |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1325 i = j+1; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1326 } |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1327 |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1328 for (i = 0; i < ht; ++i) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1329 if (line_dance[i] == -1) |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1330 { |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1331 for (j = i; j < ht && line_dance[j] == -1; ++j); |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1332 /* Clear [i,j) */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1333 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1334 intborder, CHAR_TO_PIXEL_ROW (f, i), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1335 f->width * FONT_WIDTH (f->output_data.x->font), |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1336 (j-i) * f->output_data.x->line_height, False); |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1337 i = j-1; |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1338 } |
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1339 line_dance_in_progress = 0; |
286 | 1340 } |
1341 | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1342 /* Support routines for exposure events. */ |
286 | 1343 static void clear_cursor (); |
1344 | |
771 | 1345 /* Output into a rectangle of an X-window (for frame F) |
1346 the characters in f->phys_lines that overlap that rectangle. | |
286 | 1347 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
|
1348 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
|
1349 Call this function with input blocked. */ |
286 | 1350 |
1351 static void | |
771 | 1352 dumprectangle (f, left, top, cols, rows) |
1353 struct frame *f; | |
286 | 1354 register int left, top, cols, rows; |
1355 { | |
771 | 1356 register struct frame_glyphs *active_frame = FRAME_CURRENT_GLYPHS (f); |
286 | 1357 int cursor_cleared = 0; |
1358 int bottom, right; | |
1359 register int y; | |
1360 | |
771 | 1361 if (FRAME_GARBAGED_P (f)) |
286 | 1362 return; |
1363 | |
1364 /* Express rectangle as four edges, instead of position-and-size. */ | |
1365 bottom = top + rows; | |
1366 right = left + cols; | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1367 |
286 | 1368 /* Convert rectangle edges in pixels to edges in chars. |
1369 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
|
1370 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
|
1371 left = PIXEL_TO_CHAR_COL (f, left); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1372 bottom += (f->output_data.x->line_height - 1); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1373 right += (FONT_WIDTH (f->output_data.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
|
1374 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
|
1375 right = PIXEL_TO_CHAR_COL (f, right); |
286 | 1376 |
1377 /* Clip the rectangle to what can be visible. */ | |
1378 if (left < 0) | |
1379 left = 0; | |
1380 if (top < 0) | |
1381 top = 0; | |
771 | 1382 if (right > f->width) |
1383 right = f->width; | |
1384 if (bottom > f->height) | |
1385 bottom = f->height; | |
286 | 1386 |
1387 /* Get size in chars of the rectangle. */ | |
1388 cols = right - left; | |
1389 rows = bottom - top; | |
1390 | |
1391 /* If rectangle has zero area, return. */ | |
1392 if (rows <= 0) return; | |
1393 if (cols <= 0) return; | |
1394 | |
1395 /* Turn off the cursor if it is in the rectangle. | |
1396 We will turn it back on afterward. */ | |
771 | 1397 if ((f->phys_cursor_x >= left) && (f->phys_cursor_x < right) |
1398 && (f->phys_cursor_y >= top) && (f->phys_cursor_y < bottom)) | |
286 | 1399 { |
771 | 1400 clear_cursor (f); |
286 | 1401 cursor_cleared = 1; |
1402 } | |
1403 | |
1404 /* Display the text in the rectangle, one text line at a time. */ | |
1405 | |
1406 for (y = top; y < bottom; y++) | |
1407 { | |
771 | 1408 GLYPH *line = &active_frame->glyphs[y][left]; |
1409 | |
1410 if (! active_frame->enable[y] || left > active_frame->used[y]) | |
286 | 1411 continue; |
1412 | |
771 | 1413 dumpglyphs (f, |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
1414 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
|
1415 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
|
1416 line, min (cols, active_frame->used[y] - left), |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1417 active_frame->highlight[y], 0); |
286 | 1418 } |
1419 | |
1420 /* Turn the cursor on if we turned it off. */ | |
1421 | |
1422 if (cursor_cleared) | |
771 | 1423 x_display_cursor (f, 1); |
286 | 1424 } |
1425 | |
1426 static void | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1427 frame_highlight (f) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1428 struct frame *f; |
286 | 1429 { |
3943
cbdf67dd68d0
* xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents:
3938
diff
changeset
|
1430 /* 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
|
1431 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
|
1432 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
|
1433 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
|
1434 BLOCK_INPUT; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1435 XSetWindowBorder (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1436 f->output_data.x->border_pixel); |
3943
cbdf67dd68d0
* xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents:
3938
diff
changeset
|
1437 UNBLOCK_INPUT; |
12431
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
1438 x_update_cursor (f, 1); |
286 | 1439 } |
1440 | |
1441 static void | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1442 frame_unhighlight (f) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1443 struct frame *f; |
286 | 1444 { |
3943
cbdf67dd68d0
* xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents:
3938
diff
changeset
|
1445 /* 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
|
1446 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
|
1447 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
|
1448 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
|
1449 BLOCK_INPUT; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1450 XSetWindowBorderPixmap (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1451 f->output_data.x->border_tile); |
3943
cbdf67dd68d0
* xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents:
3938
diff
changeset
|
1452 UNBLOCK_INPUT; |
12431
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
1453 x_update_cursor (f, 1); |
286 | 1454 } |
1455 | |
771 | 1456 static void XTframe_rehighlight (); |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1457 static void x_frame_rehighlight (); |
771 | 1458 |
1459 /* The focus has changed. Update the frames as necessary to reflect | |
1460 the new situation. Note that we can't change the selected frame | |
10546
7515c28a59d9
(x_destroy_window): Don't let frame being destroyed remain in
Richard M. Stallman <rms@gnu.org>
parents:
10366
diff
changeset
|
1461 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
|
1462 Each event gets marked with the frame in which it occurred, so the |
10546
7515c28a59d9
(x_destroy_window): Don't let frame being destroyed remain in
Richard M. Stallman <rms@gnu.org>
parents:
10366
diff
changeset
|
1463 Lisp code can tell when the switch took place by examining the events. */ |
369 | 1464 |
1465 static void | |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1466 x_new_focus_frame (dpyinfo, frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1467 struct x_display_info *dpyinfo; |
771 | 1468 struct frame *frame; |
286 | 1469 { |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1470 struct frame *old_focus = dpyinfo->x_focus_frame; |
286 | 1471 int events_enqueued = 0; |
1472 | |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1473 if (frame != dpyinfo->x_focus_frame) |
286 | 1474 { |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1475 /* Set this before calling other routines, so that they see |
771 | 1476 the correct value of x_focus_frame. */ |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1477 dpyinfo->x_focus_frame = frame; |
369 | 1478 |
1479 if (old_focus && old_focus->auto_lower) | |
771 | 1480 x_lower_frame (old_focus); |
286 | 1481 |
1482 #if 0 | |
771 | 1483 selected_frame = frame; |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
1484 XSETFRAME (XWINDOW (selected_frame->selected_window)->frame, |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
1485 selected_frame); |
771 | 1486 Fselect_window (selected_frame->selected_window); |
1487 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
|
1488 #endif /* ! 0 */ |
286 | 1489 |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1490 if (dpyinfo->x_focus_frame && dpyinfo->x_focus_frame->auto_raise) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1491 pending_autoraise_frame = dpyinfo->x_focus_frame; |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
1492 else |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
1493 pending_autoraise_frame = 0; |
369 | 1494 } |
1495 | |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1496 x_frame_rehighlight (dpyinfo); |
369 | 1497 } |
1498 | |
10223
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
1499 /* Handle an event saying the mouse has moved out of an Emacs frame. */ |
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
1500 |
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
1501 void |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1502 x_mouse_leave (dpyinfo) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1503 struct x_display_info *dpyinfo; |
10223
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
1504 { |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1505 x_new_focus_frame (dpyinfo, dpyinfo->x_focus_event_frame); |
10223
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
1506 } |
369 | 1507 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1508 /* 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
|
1509 another frame (this happens when a frame uses a surrogate |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1510 minibuffer frame). Shift the highlight as appropriate. |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1511 |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1512 The FRAME argument doesn't necessarily have anything to do with which |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1513 frame is being highlighted or unhighlighted; we only use it to find |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1514 the appropriate X display info. */ |
369 | 1515 static void |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1516 XTframe_rehighlight (frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1517 struct frame *frame; |
369 | 1518 { |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1519 x_frame_rehighlight (FRAME_X_DISPLAY_INFO (frame)); |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1520 } |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1521 |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1522 static void |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1523 x_frame_rehighlight (dpyinfo) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1524 struct x_display_info *dpyinfo; |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1525 { |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1526 struct frame *old_highlight = dpyinfo->x_highlight_frame; |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1527 |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1528 if (dpyinfo->x_focus_frame) |
286 | 1529 { |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1530 dpyinfo->x_highlight_frame |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1531 = ((GC_FRAMEP (FRAME_FOCUS_FRAME (dpyinfo->x_focus_frame))) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1532 ? XFRAME (FRAME_FOCUS_FRAME (dpyinfo->x_focus_frame)) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1533 : dpyinfo->x_focus_frame); |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1534 if (! FRAME_LIVE_P (dpyinfo->x_highlight_frame)) |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1535 { |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1536 FRAME_FOCUS_FRAME (dpyinfo->x_focus_frame) = Qnil; |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1537 dpyinfo->x_highlight_frame = dpyinfo->x_focus_frame; |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1538 } |
286 | 1539 } |
369 | 1540 else |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1541 dpyinfo->x_highlight_frame = 0; |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1542 |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1543 if (dpyinfo->x_highlight_frame != old_highlight) |
369 | 1544 { |
1545 if (old_highlight) | |
771 | 1546 frame_unhighlight (old_highlight); |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1547 if (dpyinfo->x_highlight_frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
1548 frame_highlight (dpyinfo->x_highlight_frame); |
369 | 1549 } |
286 | 1550 } |
1551 | |
3585
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1552 /* Keyboard processing - modifier keys, vendor-specific keysyms, etc. */ |
286 | 1553 |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1554 /* 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
|
1555 static void |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1556 x_find_modifier_meanings (dpyinfo) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1557 struct x_display_info *dpyinfo; |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1558 { |
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1559 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
|
1560 KeySym *syms; |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1561 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
|
1562 XModifierKeymap *mods; |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1563 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1564 dpyinfo->meta_mod_mask = 0; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1565 dpyinfo->shift_lock_mask = 0; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1566 dpyinfo->alt_mod_mask = 0; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1567 dpyinfo->super_mod_mask = 0; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1568 dpyinfo->hyper_mod_mask = 0; |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1569 |
2127
adaf588e32a6
* xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents:
2064
diff
changeset
|
1570 #ifdef HAVE_X11R4 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1571 XDisplayKeycodes (dpyinfo->display, &min_code, &max_code); |
2127
adaf588e32a6
* xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents:
2064
diff
changeset
|
1572 #else |
13884
26245345f6f1
(x_find_modifier_meanings): Fix !X11R4 code to use dpyinfo.
Richard M. Stallman <rms@gnu.org>
parents:
13782
diff
changeset
|
1573 min_code = dpyinfo->display->min_keycode; |
26245345f6f1
(x_find_modifier_meanings): Fix !X11R4 code to use dpyinfo.
Richard M. Stallman <rms@gnu.org>
parents:
13782
diff
changeset
|
1574 max_code = dpyinfo->display->max_keycode; |
2127
adaf588e32a6
* xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents:
2064
diff
changeset
|
1575 #endif |
adaf588e32a6
* xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents:
2064
diff
changeset
|
1576 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1577 syms = XGetKeyboardMapping (dpyinfo->display, |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1578 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
|
1579 &syms_per_code); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1580 mods = XGetModifierMapping (dpyinfo->display); |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1581 |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1582 /* Scan the modifier table to see which modifier bits the Meta and |
1436
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
1583 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
|
1584 { |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1585 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
|
1586 |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1587 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
|
1588 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
|
1589 { |
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
1590 KeyCode code |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
1591 = mods->modifiermap[(row * mods->max_keypermod) + col]; |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1592 |
6560
a071babfa9ea
(x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents:
6521
diff
changeset
|
1593 /* Zeroes are used for filler. Skip them. */ |
a071babfa9ea
(x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents:
6521
diff
changeset
|
1594 if (code == 0) |
a071babfa9ea
(x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents:
6521
diff
changeset
|
1595 continue; |
a071babfa9ea
(x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents:
6521
diff
changeset
|
1596 |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1597 /* 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
|
1598 { |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1599 int code_col; |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1600 |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1601 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
|
1602 { |
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1603 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
|
1604 |
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1605 switch (sym) |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1606 { |
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1607 case XK_Meta_L: |
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1608 case XK_Meta_R: |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1609 dpyinfo->meta_mod_mask |= (1 << row); |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1610 break; |
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1611 |
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1612 case XK_Alt_L: |
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1613 case XK_Alt_R: |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1614 dpyinfo->alt_mod_mask |= (1 << row); |
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
|
1615 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
|
1616 |
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
|
1617 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
|
1618 case XK_Hyper_R: |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1619 dpyinfo->hyper_mod_mask |= (1 << row); |
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
|
1620 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
|
1621 |
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
|
1622 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
|
1623 case XK_Super_R: |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1624 dpyinfo->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
|
1625 break; |
1436
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
1626 |
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
1627 case XK_Shift_Lock: |
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
1628 /* 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
|
1629 if ((1 << row) == LockMask) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1630 dpyinfo->shift_lock_mask = LockMask; |
1436
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
1631 break; |
1279
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 } |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1634 } |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1635 } |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1636 } |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1637 |
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1638 /* If we couldn't find any meta keys, accept any alt keys as meta keys. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1639 if (! dpyinfo->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
|
1640 { |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1641 dpyinfo->meta_mod_mask = dpyinfo->alt_mod_mask; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1642 dpyinfo->alt_mod_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
|
1643 } |
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1644 |
2923
c8997402dd6b
(x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents:
2882
diff
changeset
|
1645 /* 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
|
1646 make them just meta, not alt. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1647 if (dpyinfo->alt_mod_mask & dpyinfo->meta_mod_mask) |
2923
c8997402dd6b
(x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents:
2882
diff
changeset
|
1648 { |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1649 dpyinfo->alt_mod_mask &= ~dpyinfo->meta_mod_mask; |
2923
c8997402dd6b
(x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents:
2882
diff
changeset
|
1650 } |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1651 |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1652 XFree ((char *) syms); |
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1653 XFreeModifiermap (mods); |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1654 } |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
1655 |
2661
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
1656 /* 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
|
1657 Emacs uses. */ |
1530
a7f8a1fe258e
* xterm.c (x_convert_modifiers): Declare this to return an
Jim Blandy <jimb@redhat.com>
parents:
1436
diff
changeset
|
1658 static unsigned int |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1659 x_x_to_emacs_modifiers (dpyinfo, state) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1660 struct x_display_info *dpyinfo; |
286 | 1661 unsigned int state; |
1662 { | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1663 return ( ((state & (ShiftMask | dpyinfo->shift_lock_mask)) ? shift_modifier : 0) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1664 | ((state & ControlMask) ? ctrl_modifier : 0) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1665 | ((state & dpyinfo->meta_mod_mask) ? meta_modifier : 0) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1666 | ((state & dpyinfo->alt_mod_mask) ? alt_modifier : 0) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1667 | ((state & dpyinfo->super_mod_mask) ? super_modifier : 0) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1668 | ((state & dpyinfo->hyper_mod_mask) ? hyper_modifier : 0)); |
286 | 1669 } |
1670 | |
2661
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
1671 static unsigned int |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1672 x_emacs_to_x_modifiers (dpyinfo, state) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1673 struct x_display_info *dpyinfo; |
2661
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
1674 unsigned int state; |
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
1675 { |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1676 return ( ((state & alt_modifier) ? dpyinfo->alt_mod_mask : 0) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1677 | ((state & super_modifier) ? dpyinfo->super_mod_mask : 0) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1678 | ((state & hyper_modifier) ? dpyinfo->hyper_mod_mask : 0) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1679 | ((state & shift_modifier) ? ShiftMask : 0) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1680 | ((state & ctrl_modifier) ? ControlMask : 0) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1681 | ((state & meta_modifier) ? dpyinfo->meta_mod_mask : 0)); |
2661
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
1682 } |
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1683 |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1684 /* Convert a keysym to its name. */ |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1685 |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1686 char * |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1687 x_get_keysym_name (keysym) |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1688 KeySym keysym; |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1689 { |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1690 char *value; |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1691 |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1692 BLOCK_INPUT; |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1693 value = XKeysymToString (keysym); |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1694 UNBLOCK_INPUT; |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1695 |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1696 return value; |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
1697 } |
3585
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1698 |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1699 /* Mouse clicks and mouse movement. Rah. */ |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1700 |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1701 /* 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
|
1702 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
|
1703 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
|
1704 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
|
1705 |
6023
67aa546e4ff1
(construct_menu_click): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
6022
diff
changeset
|
1706 void |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1707 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
|
1708 FRAME_PTR f; |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1709 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
|
1710 register int *x, *y; |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1711 XRectangle *bounds; |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1712 int noclip; |
3585
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1713 { |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1714 /* 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
|
1715 even for negative values. */ |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1716 if (pix_x < 0) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1717 pix_x -= FONT_WIDTH ((f)->output_data.x->font) - 1; |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1718 if (pix_y < 0) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1719 pix_y -= (f)->output_data.x->line_height - 1; |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1720 |
3585
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1721 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
|
1722 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
|
1723 |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1724 if (bounds) |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1725 { |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1726 bounds->width = FONT_WIDTH (f->output_data.x->font); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
1727 bounds->height = f->output_data.x->line_height; |
3585
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1728 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
|
1729 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
|
1730 } |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1731 |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1732 if (!noclip) |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1733 { |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1734 if (pix_x < 0) |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1735 pix_x = 0; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1736 else if (pix_x > f->width) |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1737 pix_x = f->width; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1738 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1739 if (pix_y < 0) |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1740 pix_y = 0; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1741 else if (pix_y > f->height) |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1742 pix_y = f->height; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1743 } |
3585
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1744 |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1745 *x = pix_x; |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1746 *y = pix_y; |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1747 } |
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
1748 |
6055
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
1749 void |
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
1750 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
|
1751 FRAME_PTR f; |
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
1752 register int x, y; |
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
1753 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
|
1754 { |
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
1755 *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
|
1756 *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
|
1757 } |
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
1758 |
286 | 1759 /* Prepare a mouse-event in *RESULT for placement in the input queue. |
1760 | |
1761 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
|
1762 the mouse. */ |
286 | 1763 |
1764 static Lisp_Object | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1765 construct_mouse_click (result, event, f) |
286 | 1766 struct input_event *result; |
1767 XButtonEvent *event; | |
771 | 1768 struct frame *f; |
286 | 1769 { |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1770 /* Make the event type no_event; we'll change that when we decide |
286 | 1771 otherwise. */ |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1772 result->kind = mouse_click; |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1773 result->code = event->button - Button1; |
708 | 1774 result->timestamp = event->time; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1775 result->modifiers = (x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1776 event->state) |
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1777 | (event->type == ButtonRelease |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1778 ? up_modifier |
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
1779 : down_modifier)); |
286 | 1780 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1781 { |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1782 int row, column; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1783 |
6055
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
1784 #if 0 |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1785 pixel_to_glyph_coords (f, event->x, event->y, &column, &row, NULL, 0); |
9340
97cfba406b7b
(construct_mouse_click): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents:
9338
diff
changeset
|
1786 XSETFASTINT (result->x, column); |
97cfba406b7b
(construct_mouse_click): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents:
9338
diff
changeset
|
1787 XSETFASTINT (result->y, row); |
6055
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
1788 #endif |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
1789 XSETINT (result->x, event->x); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
1790 XSETINT (result->y, event->y); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
1791 XSETFRAME (result->frame_or_window, f); |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
1792 } |
286 | 1793 } |
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1794 |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1795 /* 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
|
1796 |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1797 static Lisp_Object |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1798 construct_menu_click (result, event, f) |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1799 struct input_event *result; |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1800 XButtonEvent *event; |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1801 struct frame *f; |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1802 { |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1803 /* 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
|
1804 otherwise. */ |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1805 result->kind = mouse_click; |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
1806 XSETINT (result->code, event->button - Button1); |
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1807 result->timestamp = event->time; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1808 result->modifiers = (x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1809 event->state) |
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1810 | (event->type == ButtonRelease |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1811 ? up_modifier |
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1812 : down_modifier)); |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1813 |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
1814 XSETINT (result->x, event->x); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
1815 XSETINT (result->y, -1); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
1816 XSETFRAME (result->frame_or_window, f); |
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
1817 } |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
1818 |
429 | 1819 /* Function to report a mouse movement to the mainstream Emacs code. |
1820 The input handler calls this. | |
1821 | |
1822 We have received a mouse movement event, which is given in *event. | |
1823 If the mouse is over a different glyph than it was last time, tell | |
1824 the mainstream emacs code by setting mouse_moved. If not, ask for | |
1825 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
|
1826 |
429 | 1827 static void |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
1828 note_mouse_movement (frame, event) |
771 | 1829 FRAME_PTR frame; |
429 | 1830 XMotionEvent *event; |
1831 { | |
732 | 1832 last_mouse_movement_time = event->time; |
1833 | |
7680
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1834 if (event->window != FRAME_X_WINDOW (frame)) |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1835 { |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
1836 frame->mouse_moved = 1; |
7680
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1837 last_mouse_scroll_bar = Qnil; |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1838 |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1839 note_mouse_highlight (frame, -1, -1); |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1840 |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1841 /* Ask for another mouse motion event. */ |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1842 { |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1843 int dummy; |
8279
4cde734c20e8
(note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents:
8164
diff
changeset
|
1844 Window dummy_window; |
7680
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1845 |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1846 XQueryPointer (event->display, FRAME_X_WINDOW (frame), |
8279
4cde734c20e8
(note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents:
8164
diff
changeset
|
1847 &dummy_window, &dummy_window, |
7680
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1848 &dummy, &dummy, &dummy, &dummy, |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1849 (unsigned int *) &dummy); |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1850 } |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1851 } |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1852 |
429 | 1853 /* Has the mouse moved off the glyph it was on at the last sighting? */ |
7680
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1854 else if (event->x < last_mouse_glyph.x |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1855 || event->x >= last_mouse_glyph.x + last_mouse_glyph.width |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1856 || event->y < last_mouse_glyph.y |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1857 || 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
|
1858 { |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
1859 frame->mouse_moved = 1; |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
1860 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
|
1861 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1862 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
|
1863 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1864 /* 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
|
1865 { |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1866 int dummy; |
8279
4cde734c20e8
(note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents:
8164
diff
changeset
|
1867 Window dummy_window; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1868 |
7680
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1869 XQueryPointer (event->display, FRAME_X_WINDOW (frame), |
8279
4cde734c20e8
(note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents:
8164
diff
changeset
|
1870 &dummy_window, &dummy_window, |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1871 &dummy, &dummy, &dummy, &dummy, |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1872 (unsigned int *) &dummy); |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1873 } |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
1874 } |
429 | 1875 else |
1876 { | |
1877 /* It's on the same glyph. Call XQueryPointer so we'll get an | |
1878 event the next time the mouse moves and we can see if it's | |
1879 *still* on the same glyph. */ | |
1880 int dummy; | |
8279
4cde734c20e8
(note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents:
8164
diff
changeset
|
1881 Window dummy_window; |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
1882 |
7680
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1883 XQueryPointer (event->display, FRAME_X_WINDOW (frame), |
8279
4cde734c20e8
(note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents:
8164
diff
changeset
|
1884 &dummy_window, &dummy_window, |
429 | 1885 &dummy, &dummy, &dummy, &dummy, |
1886 (unsigned int *) &dummy); | |
1887 } | |
1888 } | |
1889 | |
6644
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
1890 /* This is used for debugging, to turn off note_mouse_highlight. */ |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
1891 static int disable_mouse_highlight; |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
1892 |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1893 /* 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
|
1894 as regards highlighting characters that have mouse-face properties. |
7680
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1895 Also dehighlighting chars where the mouse was before. |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1896 X and Y can be negative or out of range. */ |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1897 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1898 static void |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1899 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
|
1900 FRAME_PTR f; |
11915
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
1901 int x, y; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1902 { |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1903 int row, column, portion; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1904 XRectangle new_glyph; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1905 Lisp_Object window; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1906 struct window *w; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1907 |
6644
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
1908 if (disable_mouse_highlight) |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
1909 return; |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
1910 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1911 FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_x = x; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1912 FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_y = y; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1913 FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_frame = f; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1914 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1915 if (FRAME_X_DISPLAY_INFO (f)->mouse_face_defer) |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1916 return; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1917 |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
1918 if (gc_in_progress) |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
1919 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1920 FRAME_X_DISPLAY_INFO (f)->mouse_face_deferred_gc = 1; |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
1921 return; |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
1922 } |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
1923 |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1924 /* 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
|
1925 pixel_to_glyph_coords (f, x, y, &column, &row, |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
1926 &new_glyph, FRAME_X_DISPLAY_INFO (f)->grabbed); |
6616
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 /* Which window is that in? */ |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1929 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
|
1930 w = XWINDOW (window); |
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 we were displaying active text in another window, clear that. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1933 if (! EQ (window, FRAME_X_DISPLAY_INFO (f)->mouse_face_window)) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1934 clear_mouse_face (FRAME_X_DISPLAY_INFO (f)); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1935 |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1936 /* Are we in a window whose display is up to date? |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1937 And verify the buffer's text has not changed. */ |
7680
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1938 if (WINDOWP (window) && portion == 0 && row >= 0 && column >= 0 |
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
1939 && row < FRAME_HEIGHT (f) && column < FRAME_WIDTH (f) |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1940 && EQ (w->window_end_valid, w->buffer) |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
1941 && w->last_modified == BUF_MODIFF (XBUFFER (w->buffer))) |
6616
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 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
|
1944 int i, pos; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1945 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1946 /* 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
|
1947 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
|
1948 if (ptr[i] > 0) |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1949 break; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1950 pos = ptr[i]; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1951 /* Is it outside the displayed active region (if any)? */ |
7282
2bc4929691e9
(show_mouse_face): Fix test for cursor in highlighted area.
Karl Heuer <kwzh@gnu.org>
parents:
7264
diff
changeset
|
1952 if (pos <= 0) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1953 clear_mouse_face (FRAME_X_DISPLAY_INFO (f)); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1954 else if (! (EQ (window, FRAME_X_DISPLAY_INFO (f)->mouse_face_window) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1955 && row >= FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_row |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1956 && row <= FRAME_X_DISPLAY_INFO (f)->mouse_face_end_row |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1957 && (row > FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_row |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1958 || column >= FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_col) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1959 && (row < FRAME_X_DISPLAY_INFO (f)->mouse_face_end_row |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1960 || column < FRAME_X_DISPLAY_INFO (f)->mouse_face_end_col |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1961 || FRAME_X_DISPLAY_INFO (f)->mouse_face_past_end))) |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1962 { |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1963 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
|
1964 Lisp_Object *overlay_vec; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1965 int len, noverlays, ignor1; |
6649
1305248ee38a
(note_mouse_highlight): Reject out-of-range pos value
Richard M. Stallman <rms@gnu.org>
parents:
6644
diff
changeset
|
1966 struct buffer *obuf; |
6683
af1629dfdb4c
(note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents:
6660
diff
changeset
|
1967 int obegv, ozv; |
af1629dfdb4c
(note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents:
6660
diff
changeset
|
1968 |
af1629dfdb4c
(note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents:
6660
diff
changeset
|
1969 /* If we get an out-of-range value, return now; avoid an error. */ |
af1629dfdb4c
(note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents:
6660
diff
changeset
|
1970 if (pos > BUF_Z (XBUFFER (w->buffer))) |
6649
1305248ee38a
(note_mouse_highlight): Reject out-of-range pos value
Richard M. Stallman <rms@gnu.org>
parents:
6644
diff
changeset
|
1971 return; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1972 |
6626
59c44532d2a0
(construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents:
6616
diff
changeset
|
1973 /* 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
|
1974 overlays_at and compute_char_face. */ |
6649
1305248ee38a
(note_mouse_highlight): Reject out-of-range pos value
Richard M. Stallman <rms@gnu.org>
parents:
6644
diff
changeset
|
1975 obuf = current_buffer; |
6626
59c44532d2a0
(construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents:
6616
diff
changeset
|
1976 current_buffer = XBUFFER (w->buffer); |
6683
af1629dfdb4c
(note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents:
6660
diff
changeset
|
1977 obegv = BEGV; |
af1629dfdb4c
(note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents:
6660
diff
changeset
|
1978 ozv = ZV; |
af1629dfdb4c
(note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents:
6660
diff
changeset
|
1979 BEGV = BEG; |
af1629dfdb4c
(note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents:
6660
diff
changeset
|
1980 ZV = Z; |
6626
59c44532d2a0
(construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents:
6616
diff
changeset
|
1981 |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1982 /* Yes. Clear the display of the old active region, if any. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
1983 clear_mouse_face (FRAME_X_DISPLAY_INFO (f)); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1984 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1985 /* Is this char mouse-active? */ |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
1986 XSETINT (position, pos); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1987 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1988 len = 10; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1989 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
|
1990 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1991 /* 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
|
1992 Store the length in len. */ |
8964
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
1993 noverlays = overlays_at (XINT (pos), 1, &overlay_vec, &len, |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
1994 NULL, NULL); |
6626
59c44532d2a0
(construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents:
6616
diff
changeset
|
1995 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
|
1996 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1997 /* 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
|
1998 overlay = Qnil; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
1999 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
|
2000 { |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2001 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
|
2002 if (!NILP (mouse_face)) |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2003 { |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2004 overlay = overlay_vec[i]; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2005 break; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2006 } |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2007 } |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2008 free (overlay_vec); |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2009 /* 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
|
2010 if (NILP (overlay)) |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2011 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
|
2012 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2013 /* Handle the overlay case. */ |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2014 if (! NILP (overlay)) |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2015 { |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2016 /* 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
|
2017 should be active. */ |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2018 Lisp_Object before, after; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2019 int ignore; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2020 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2021 before = Foverlay_start (overlay); |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2022 after = Foverlay_end (overlay); |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2023 /* Record this as the current active region. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2024 fast_find_position (window, before, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2025 &FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_col, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2026 &FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_row); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2027 FRAME_X_DISPLAY_INFO (f)->mouse_face_past_end |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2028 = !fast_find_position (window, after, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2029 &FRAME_X_DISPLAY_INFO (f)->mouse_face_end_col, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2030 &FRAME_X_DISPLAY_INFO (f)->mouse_face_end_row); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2031 FRAME_X_DISPLAY_INFO (f)->mouse_face_window = window; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2032 FRAME_X_DISPLAY_INFO (f)->mouse_face_face_id |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2033 = compute_char_face (f, w, pos, 0, 0, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2034 &ignore, pos + 1, 1); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2035 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2036 /* Display it as active. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2037 show_mouse_face (FRAME_X_DISPLAY_INFO (f), 1); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2038 } |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2039 /* Handle the text property case. */ |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2040 else if (! NILP (mouse_face)) |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2041 { |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2042 /* 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
|
2043 should be active. */ |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2044 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
|
2045 int ignore; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2046 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2047 beginning = Fmarker_position (w->start); |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2048 XSETINT (end, (BUF_Z (XBUFFER (w->buffer)) |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2049 - XFASTINT (w->window_end_pos))); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2050 before |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2051 = 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
|
2052 Qmouse_face, |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2053 w->buffer, beginning); |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2054 after |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2055 = 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
|
2056 w->buffer, end); |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2057 /* Record this as the current active region. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2058 fast_find_position (window, before, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2059 &FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_col, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2060 &FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_row); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2061 FRAME_X_DISPLAY_INFO (f)->mouse_face_past_end |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2062 = !fast_find_position (window, after, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2063 &FRAME_X_DISPLAY_INFO (f)->mouse_face_end_col, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2064 &FRAME_X_DISPLAY_INFO (f)->mouse_face_end_row); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2065 FRAME_X_DISPLAY_INFO (f)->mouse_face_window = window; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2066 FRAME_X_DISPLAY_INFO (f)->mouse_face_face_id |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2067 = 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
|
2068 &ignore, pos + 1, 1); |
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 /* Display it as active. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2071 show_mouse_face (FRAME_X_DISPLAY_INFO (f), 1); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2072 } |
6683
af1629dfdb4c
(note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents:
6660
diff
changeset
|
2073 BEGV = obegv; |
af1629dfdb4c
(note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents:
6660
diff
changeset
|
2074 ZV = ozv; |
6626
59c44532d2a0
(construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents:
6616
diff
changeset
|
2075 current_buffer = obuf; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2076 } |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2077 } |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2078 } |
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 /* 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
|
2081 Store them in *COLUMNP and *ROWP. |
6644
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2082 This assumes display in WINDOW is up to date. |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2083 If POS is above start of WINDOW, return coords |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2084 of start of first screen line. |
7651
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
2085 If POS is after end of WINDOW, return coords of end of last screen line. |
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
2086 |
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
2087 Value is 1 if POS is in range, 0 if it was off screen. */ |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2088 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2089 static int |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2090 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
|
2091 Lisp_Object window; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2092 int pos; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2093 int *columnp, *rowp; |
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 struct window *w = XWINDOW (window); |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2096 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
|
2097 int i; |
7651
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
2098 int row = 0; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2099 int left = w->left; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2100 int top = w->top; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2101 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
|
2102 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
|
2103 int *charstarts; |
6644
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2104 int lastcol; |
9762
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2105 int maybe_next_line = 0; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2106 |
7651
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
2107 /* Find the right row. */ |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2108 for (i = 0; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2109 i < height; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2110 i++) |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2111 { |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2112 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
|
2113 if (linestart > pos) |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2114 break; |
9762
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2115 /* If the position sought is the end of the buffer, |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2116 don't include the blank lines at the bottom of the window. */ |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2117 if (linestart == pos && pos == BUF_ZV (XBUFFER (w->buffer))) |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2118 { |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2119 maybe_next_line = 1; |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2120 break; |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2121 } |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2122 if (linestart > 0) |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2123 row = 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 |
7651
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
2126 /* Find the right column with in it. */ |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2127 charstarts = FRAME_CURRENT_GLYPHS (f)->charstarts[top + row]; |
6644
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2128 lastcol = left; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2129 for (i = 0; i < width; i++) |
6644
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2130 { |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2131 if (charstarts[left + i] == pos) |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2132 { |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2133 *rowp = row + top; |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2134 *columnp = i + left; |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2135 return 1; |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2136 } |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2137 else if (charstarts[left + i] > pos) |
7651
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
2138 break; |
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
2139 else if (charstarts[left + i] > 0) |
6644
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2140 lastcol = left + i; |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2141 } |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2142 |
9762
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2143 /* If we're looking for the end of the buffer, |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2144 and we didn't find it in the line we scanned, |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2145 use the start of the following line. */ |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2146 if (maybe_next_line) |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2147 { |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2148 row++; |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2149 i = 0; |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2150 } |
567e3670acc3
(fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents:
9741
diff
changeset
|
2151 |
6644
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2152 *rowp = row + top; |
8e2379ce4fcb
(fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents:
6631
diff
changeset
|
2153 *columnp = lastcol; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2154 return 0; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2155 } |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2156 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2157 /* 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
|
2158 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
|
2159 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2160 static void |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2161 show_mouse_face (dpyinfo, hl) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2162 struct x_display_info *dpyinfo; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2163 int hl; |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2164 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2165 struct window *w = XWINDOW (dpyinfo->mouse_face_window); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2166 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
|
2167 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
|
2168 int i; |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2169 int cursor_off = 0; |
8164
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2170 int old_curs_x = curs_x; |
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2171 int old_curs_y = curs_y; |
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2172 |
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2173 /* Set these variables temporarily |
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2174 so that if we have to turn the cursor off and on again |
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2175 we will put it back at the same place. */ |
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2176 curs_x = f->phys_cursor_x; |
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2177 curs_y = f->phys_cursor_y; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2178 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2179 for (i = FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_row; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2180 i <= FRAME_X_DISPLAY_INFO (f)->mouse_face_end_row; i++) |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2181 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2182 int column = (i == FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_row |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2183 ? FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_col |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2184 : w->left); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2185 int endcolumn = (i == FRAME_X_DISPLAY_INFO (f)->mouse_face_end_row |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2186 ? FRAME_X_DISPLAY_INFO (f)->mouse_face_end_col |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2187 : w->left + width); |
7992
7bb45acbcaa6
(show_mouse_face): Set endcolumn ok in side-by-side windows.
Richard M. Stallman <rms@gnu.org>
parents:
7959
diff
changeset
|
2188 endcolumn = min (endcolumn, FRAME_CURRENT_GLYPHS (f)->used[i]); |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2189 |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2190 /* If the cursor's in the text we are about to rewrite, |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2191 turn the cursor off. */ |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2192 if (i == curs_y |
13598
4fbb17b559bf
(show_mouse_face): When clearing cursor, use proper column range.
Richard M. Stallman <rms@gnu.org>
parents:
13561
diff
changeset
|
2193 && curs_x >= column - 1 |
4fbb17b559bf
(show_mouse_face): When clearing cursor, use proper column range.
Richard M. Stallman <rms@gnu.org>
parents:
13561
diff
changeset
|
2194 && curs_x <= endcolumn) |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2195 { |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2196 x_display_cursor (f, 0); |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2197 cursor_off = 1; |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2198 } |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2199 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2200 dumpglyphs (f, |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2201 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
|
2202 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
|
2203 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
|
2204 endcolumn - column, |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2205 /* Highlight with mouse face if hl > 0. */ |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
2206 hl > 0 ? 3 : 0, 0); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2207 } |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2208 |
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2209 /* If we turned the cursor off, turn it back on. */ |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2210 if (cursor_off) |
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
2211 x_display_cursor (f, 1); |
6757
770fe370479b
(show_mouse_face): Change the mouse cursor accordingly.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6683
diff
changeset
|
2212 |
8164
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2213 curs_x = old_curs_x; |
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2214 curs_y = old_curs_y; |
3b90e6a741f1
(XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
8098
diff
changeset
|
2215 |
6757
770fe370479b
(show_mouse_face): Change the mouse cursor accordingly.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6683
diff
changeset
|
2216 /* Change the mouse cursor according to the value of HL. */ |
770fe370479b
(show_mouse_face): Change the mouse cursor accordingly.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6683
diff
changeset
|
2217 if (hl > 0) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2218 XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
2219 f->output_data.x->cross_cursor); |
6757
770fe370479b
(show_mouse_face): Change the mouse cursor accordingly.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6683
diff
changeset
|
2220 else |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2221 XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
2222 f->output_data.x->text_cursor); |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2223 } |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2224 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2225 /* 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
|
2226 Redraw it unhighlighted first. */ |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2227 |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2228 static void |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2229 clear_mouse_face (dpyinfo) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2230 struct x_display_info *dpyinfo; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2231 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2232 if (! NILP (dpyinfo->mouse_face_window)) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2233 show_mouse_face (dpyinfo, 0); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2234 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2235 dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2236 dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2237 dpyinfo->mouse_face_window = Qnil; |
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2238 } |
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
2239 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2240 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
|
2241 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
|
2242 |
429 | 2243 /* Return the current position of the mouse. |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2244 *fp should be a frame which indicates which display to ask about. |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2245 |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2246 If the mouse movement started in a scroll bar, set *fp, *bar_window, |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2247 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
|
2248 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
|
2249 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
|
2250 |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2251 If the mouse movement started elsewhere, set *fp to the frame the |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2252 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
|
2253 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
|
2254 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2255 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
|
2256 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
|
2257 |
3669
fd4187a96445
(XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents:
3639
diff
changeset
|
2258 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
|
2259 |
429 | 2260 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
|
2261 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
|
2262 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
|
2263 again. */ |
429 | 2264 |
2265 static void | |
11122
ce63fb361ae9
(XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents:
11015
diff
changeset
|
2266 XTmouse_position (fp, insist, bar_window, part, x, y, time) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2267 FRAME_PTR *fp; |
11122
ce63fb361ae9
(XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents:
11015
diff
changeset
|
2268 int insist; |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2269 Lisp_Object *bar_window; |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2270 enum scroll_bar_part *part; |
429 | 2271 Lisp_Object *x, *y; |
732 | 2272 unsigned long *time; |
429 | 2273 { |
3669
fd4187a96445
(XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents:
3639
diff
changeset
|
2274 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
|
2275 |
429 | 2276 BLOCK_INPUT; |
2277 | |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2278 if (! NILP (last_mouse_scroll_bar)) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2279 x_scroll_bar_report_motion (fp, bar_window, part, x, y, time); |
429 | 2280 else |
2281 { | |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2282 Window root; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2283 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
|
2284 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2285 Window dummy_window; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2286 int dummy; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2287 |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
2288 Lisp_Object frame, tail; |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
2289 |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
2290 /* Clear the mouse-moved flag for every frame on this display. */ |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
2291 FOR_EACH_FRAME (tail, frame) |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
2292 if (FRAME_X_DISPLAY (XFRAME (frame)) == FRAME_X_DISPLAY (*fp)) |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
2293 XFRAME (frame)->mouse_moved = 0; |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
2294 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2295 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
|
2296 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2297 /* Figure out which root window we're on. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2298 XQueryPointer (FRAME_X_DISPLAY (*fp), |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2299 DefaultRootWindow (FRAME_X_DISPLAY (*fp)), |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2300 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2301 /* 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
|
2302 &root, |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2303 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2304 /* 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
|
2305 a different screen. */ |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2306 &dummy_window, |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2307 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2308 /* The position on that root window. */ |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
2309 &root_x, &root_y, |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2310 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2311 /* 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
|
2312 &dummy, &dummy, |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2313 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2314 /* 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
|
2315 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
|
2316 (unsigned int *) &dummy); |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2317 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2318 /* 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
|
2319 containing the pointer. */ |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2320 { |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2321 Window win, child; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2322 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
|
2323 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
|
2324 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2325 win = root; |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2326 |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2327 /* XTranslateCoordinates can get errors if the window |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2328 structure is changing at the same time this function |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2329 is running. So at least we must not crash from them. */ |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2330 |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2331 x_catch_errors (FRAME_X_DISPLAY (*fp)); |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2332 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2333 if (FRAME_X_DISPLAY_INFO (*fp)->grabbed && last_mouse_frame |
8430
356e5509efda
(construct_mouse_click, construct_menu_click):
Richard M. Stallman <rms@gnu.org>
parents:
8353
diff
changeset
|
2334 && FRAME_LIVE_P (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
|
2335 { |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2336 /* 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
|
2337 even if the mouse is now outside it. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2338 XTranslateCoordinates (FRAME_X_DISPLAY (*fp), |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2339 |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2340 /* From-window, to-window. */ |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2341 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
|
2342 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2343 /* 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
|
2344 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
|
2345 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2346 /* Child of win. */ |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2347 &child); |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2348 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
|
2349 } |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2350 else |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2351 { |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2352 while (1) |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2353 { |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2354 XTranslateCoordinates (FRAME_X_DISPLAY (*fp), |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2355 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2356 /* From-window, to-window. */ |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2357 root, win, |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2358 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2359 /* From-position, to-position. */ |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2360 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
|
2361 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2362 /* Child of win. */ |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2363 &child); |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2364 |
13627
8873aa3451dd
(XTmouse_position): Exit the loop if child == win.
Richard M. Stallman <rms@gnu.org>
parents:
13598
diff
changeset
|
2365 if (child == None || child == win) |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2366 break; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2367 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2368 win = child; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2369 parent_x = win_x; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2370 parent_y = win_y; |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2371 } |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2372 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2373 /* Now we know that: |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2374 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
|
2375 (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
|
2376 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
|
2377 (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
|
2378 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
|
2379 (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
|
2380 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
|
2381 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
|
2382 never use them in that case.) */ |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2383 |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2384 /* Is win one of our frames? */ |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
2385 f1 = x_any_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win); |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
2386 } |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
2387 |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2388 if (x_had_errors_p (FRAME_X_DISPLAY (*fp))) |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2389 f1 = 0; |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2390 |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2391 x_uncatch_errors (FRAME_X_DISPLAY (*fp)); |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
2392 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2393 /* 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
|
2394 if (! f1) |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2395 { |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2396 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
|
2397 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2398 if (bar) |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2399 { |
3669
fd4187a96445
(XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents:
3639
diff
changeset
|
2400 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
|
2401 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
|
2402 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
|
2403 } |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2404 } |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2405 |
11122
ce63fb361ae9
(XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents:
11015
diff
changeset
|
2406 if (f1 == 0 && insist) |
ce63fb361ae9
(XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents:
11015
diff
changeset
|
2407 f1 = selected_frame; |
ce63fb361ae9
(XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents:
11015
diff
changeset
|
2408 |
3669
fd4187a96445
(XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents:
3639
diff
changeset
|
2409 if (f1) |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2410 { |
6055
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
2411 int ignore1, ignore2; |
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
2412 |
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
2413 /* 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
|
2414 |
a9f61727a90c
(construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents:
6023
diff
changeset
|
2415 pixel_to_glyph_coords (f1, win_x, win_y, &ignore1, &ignore2, |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2416 &last_mouse_glyph, |
11122
ce63fb361ae9
(XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents:
11015
diff
changeset
|
2417 FRAME_X_DISPLAY_INFO (f1)->grabbed |
ce63fb361ae9
(XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents:
11015
diff
changeset
|
2418 || insist); |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2419 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2420 *bar_window = Qnil; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2421 *part = 0; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2422 *fp = f1; |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2423 XSETINT (*x, win_x); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2424 XSETINT (*y, win_y); |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2425 *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
|
2426 } |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2427 } |
429 | 2428 } |
2429 | |
2430 UNBLOCK_INPUT; | |
2431 } | |
2432 | |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2433 /* Scroll bar support. */ |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2434 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2435 /* 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
|
2436 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
|
2437 bits. */ |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2438 static struct scroll_bar * |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2439 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
|
2440 Window window_id; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2441 { |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2442 Lisp_Object tail, frame; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2443 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2444 for (tail = Vframe_list; |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2445 XGCTYPE (tail) == Lisp_Cons; |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2446 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
|
2447 { |
6521
a975c5944916
(x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6413
diff
changeset
|
2448 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
|
2449 |
a975c5944916
(x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6413
diff
changeset
|
2450 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
|
2451 /* All elements of Vframe_list should be frames. */ |
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2452 if (! GC_FRAMEP (frame)) |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2453 abort (); |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2454 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2455 /* 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
|
2456 right window ID. */ |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2457 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
|
2458 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
|
2459 /* 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
|
2460 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
|
2461 ! GC_NILP (bar) || (bar = condemned, |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2462 condemned = Qnil, |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2463 ! 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
|
2464 bar = XSCROLL_BAR (bar)->next) |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2465 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
|
2466 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
|
2467 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2468 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2469 return 0; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2470 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2471 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2472 /* 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
|
2473 scroll bar vector for it. */ |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2474 static struct scroll_bar * |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2475 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
|
2476 struct window *window; |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2477 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
|
2478 { |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2479 FRAME_PTR f = XFRAME (WINDOW_FRAME (window)); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2480 struct scroll_bar *bar |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2481 = 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
|
2482 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2483 BLOCK_INPUT; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2484 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2485 { |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2486 XSetWindowAttributes a; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2487 unsigned long mask; |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
2488 a.background_pixel = f->output_data.x->background_pixel; |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2489 a.event_mask = (ButtonPressMask | ButtonReleaseMask |
1793
cf4c3f01ddb9
* xterm.c (x_scrollbar_create): Include PointerMotionHintMask in
Jim Blandy <jimb@redhat.com>
parents:
1787
diff
changeset
|
2490 | ButtonMotionMask | PointerMotionHintMask |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2491 | ExposureMask); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
2492 a.cursor = FRAME_X_DISPLAY_INFO (f)->vertical_scroll_bar_cursor; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2493 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2494 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
|
2495 |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
2496 #if 0 |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
2497 |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
2498 ac = 0; |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
2499 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
|
2500 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
|
2501 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
|
2502 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
|
2503 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
|
2504 sb_widget = XtCreateManagedWidget ("box", |
5916
4e827db2523a
(x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents:
5898
diff
changeset
|
2505 boxWidgetClass, |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
2506 f->output_data.x->edit_widget, al, ac); |
5916
4e827db2523a
(x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents:
5898
diff
changeset
|
2507 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
|
2508 (bar, sb_widget->core.window); |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
2509 #endif |
5916
4e827db2523a
(x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents:
5898
diff
changeset
|
2510 SET_SCROLL_BAR_X_WINDOW |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
2511 (bar, |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2512 XCreateWindow (FRAME_X_DISPLAY (f), 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
|
2513 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2514 /* 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
|
2515 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
|
2516 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2517 /* 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
|
2518 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
|
2519 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2520 /* Attributes. */ |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2521 mask, &a)); |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2522 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2523 |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2524 XSETWINDOW (bar->window, window); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2525 XSETINT (bar->top, top); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2526 XSETINT (bar->left, left); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2527 XSETINT (bar->width, width); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2528 XSETINT (bar->height, height); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2529 XSETINT (bar->start, 0); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2530 XSETINT (bar->end, 0); |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2531 bar->dragging = Qnil; |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2532 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2533 /* Add bar to its frame's list of scroll bars. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2534 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
|
2535 bar->prev = Qnil; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2536 XSETVECTOR (FRAME_SCROLL_BARS (f), bar); |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2537 if (! NILP (bar->next)) |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2538 XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar); |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2539 |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
2540 XMapRaised (FRAME_X_DISPLAY (f), 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
|
2541 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2542 UNBLOCK_INPUT; |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2543 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2544 return bar; |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2545 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2546 |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2547 /* 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
|
2548 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
|
2549 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
|
2550 redraw it. (REBUILD is handy for drawing the handle after expose |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
2551 events.) |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2552 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2553 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
|
2554 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
|
2555 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
|
2556 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
|
2557 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
|
2558 static void |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2559 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
|
2560 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
|
2561 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
|
2562 int rebuild; |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2563 { |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2564 int dragging = ! NILP (bar->dragging); |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2565 Window w = SCROLL_BAR_X_WINDOW (bar); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2566 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
2567 GC gc = f->output_data.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
|
2568 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2569 /* 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
|
2570 if (! rebuild |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2571 && 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
|
2572 && 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
|
2573 return; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2574 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2575 BLOCK_INPUT; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2576 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2577 { |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2578 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
|
2579 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
|
2580 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
|
2581 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2582 /* 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
|
2583 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
|
2584 { |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2585 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
|
2586 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2587 if (start < 0) |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2588 start = 0; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2589 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
|
2590 start = top_range; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2591 end = start + length; |
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 if (end < start) |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2594 end = start; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2595 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
|
2596 end = top_range; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2597 } |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2598 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2599 /* Store the adjusted setting in the scroll bar. */ |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2600 XSETINT (bar->start, start); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2601 XSETINT (bar->end, end); |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2602 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2603 /* 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
|
2604 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
|
2605 end = top_range; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2606 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2607 /* 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
|
2608 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
|
2609 that many pixels tall. */ |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2610 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
|
2611 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2612 /* 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
|
2613 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
|
2614 if (0 < start) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2615 XClearArea (FRAME_X_DISPLAY (f), w, |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2616 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2617 /* 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
|
2618 VERTICAL_SCROLL_BAR_LEFT_BORDER, |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2619 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
|
2620 inside_width, start, |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2621 False); |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2622 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2623 /* Draw the handle itself. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2624 XFillRectangle (FRAME_X_DISPLAY (f), w, gc, |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2625 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2626 /* x, y, width, height */ |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2627 VERTICAL_SCROLL_BAR_LEFT_BORDER, |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2628 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
|
2629 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
|
2630 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2631 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2632 /* 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
|
2633 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
|
2634 if (end < inside_height) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2635 XClearArea (FRAME_X_DISPLAY (f), w, |
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 /* 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
|
2638 VERTICAL_SCROLL_BAR_LEFT_BORDER, |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2639 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
|
2640 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
|
2641 False); |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2642 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2643 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2644 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2645 UNBLOCK_INPUT; |
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 |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3585
diff
changeset
|
2648 /* 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
|
2649 window configurations. */ |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2650 static void |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2651 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
|
2652 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
|
2653 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
|
2654 { |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2655 Window w = SCROLL_BAR_X_WINDOW (bar); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2656 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2657 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2658 BLOCK_INPUT; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2659 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2660 { |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2661 XWindowChanges wc; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2662 unsigned int mask = 0; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2663 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2664 wc.x = left; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2665 wc.y = top; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2666 wc.width = width; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2667 wc.height = height; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2668 |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2669 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
|
2670 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
|
2671 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
|
2672 if (height != XINT (bar->height)) mask |= CWHeight; |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
2673 |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2674 if (mask) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2675 XConfigureWindow (FRAME_X_DISPLAY (f), 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
|
2676 mask, &wc); |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2677 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2678 |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2679 XSETINT (bar->left, left); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2680 XSETINT (bar->top, top); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2681 XSETINT (bar->width, width); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2682 XSETINT (bar->height, height); |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2683 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2684 UNBLOCK_INPUT; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2685 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2686 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2687 /* 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
|
2688 to nil. */ |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2689 static void |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2690 x_scroll_bar_remove (bar) |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2691 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
|
2692 { |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2693 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
|
2694 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2695 BLOCK_INPUT; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2696 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2697 /* Destroy the window. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2698 XDestroyWindow (FRAME_X_DISPLAY (f), SCROLL_BAR_X_WINDOW (bar)); |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2699 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2700 /* 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
|
2701 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
|
2702 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2703 UNBLOCK_INPUT; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2704 } |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2705 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2706 /* 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
|
2707 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
|
2708 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
|
2709 create one. */ |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2710 static void |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2711 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
|
2712 struct window *window; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2713 int portion, whole, position; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2714 { |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2715 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
|
2716 int top = XINT (window->top); |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2717 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
|
2718 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
|
2719 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2720 /* 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
|
2721 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
|
2722 int pixel_left = CHAR_TO_PIXEL_COL (f, left); |
9167
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
2723 int pixel_width |
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
2724 = (FRAME_SCROLL_BAR_PIXEL_WIDTH (f) > 0 |
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
2725 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
2726 : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->output_data.x->font))); |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2727 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
|
2728 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2729 struct scroll_bar *bar; |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2730 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2731 /* Does the scroll bar exist yet? */ |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2732 if (NILP (window->vertical_scroll_bar)) |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2733 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
|
2734 pixel_top, pixel_left, |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2735 pixel_width, pixel_height); |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2736 else |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2737 { |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2738 /* 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
|
2739 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
|
2740 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
|
2741 } |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2742 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2743 /* 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
|
2744 dragged. */ |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2745 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
|
2746 { |
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2747 int top_range = 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
|
2748 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2749 if (whole == 0) |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2750 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
|
2751 else |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2752 { |
3686
910ea1d66bfd
* xterm.c (XTset_vertical_scroll_bar): Use double type for
Jim Blandy <jimb@redhat.com>
parents:
3683
diff
changeset
|
2753 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
|
2754 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
|
2755 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2756 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
|
2757 } |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2758 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2759 |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2760 XSETVECTOR (window->vertical_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 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2762 |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2763 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2764 /* 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
|
2765 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
|
2766 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
|
2767 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
|
2768 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
|
2769 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
|
2770 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
|
2771 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2772 /* 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
|
2773 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
|
2774 `*redeem_scroll_bar_hook' is applied to its window before the judgement. */ |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
2775 static void |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2776 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
|
2777 FRAME_PTR frame; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2778 { |
13205
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2779 /* Transfer all the scroll bars to FRAME_CONDEMNED_SCROLL_BARS. */ |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2780 while (! NILP (FRAME_SCROLL_BARS (frame))) |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2781 { |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2782 Lisp_Object bar; |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2783 bar = FRAME_SCROLL_BARS (frame); |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2784 FRAME_SCROLL_BARS (frame) = XSCROLL_BAR (bar)->next; |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2785 XSCROLL_BAR (bar)->next = FRAME_CONDEMNED_SCROLL_BARS (frame); |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2786 XSCROLL_BAR (bar)->prev = Qnil; |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2787 if (! NILP (FRAME_CONDEMNED_SCROLL_BARS (frame))) |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2788 XSCROLL_BAR (FRAME_CONDEMNED_SCROLL_BARS (frame))->prev = bar; |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2789 FRAME_CONDEMNED_SCROLL_BARS (frame) = bar; |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
2790 } |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2791 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2792 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2793 /* 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
|
2794 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
|
2795 static void |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2796 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
|
2797 struct window *window; |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2798 { |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2799 struct scroll_bar *bar; |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2800 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2801 /* 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
|
2802 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
|
2803 abort (); |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2804 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2805 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
|
2806 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2807 /* 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
|
2808 { |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2809 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
|
2810 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2811 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
|
2812 { |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2813 /* 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
|
2814 the lists. */ |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2815 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
|
2816 /* 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
|
2817 return; |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2818 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
|
2819 window->vertical_scroll_bar)) |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2820 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
|
2821 else |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2822 /* 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
|
2823 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
|
2824 abort (); |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2825 } |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2826 else |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2827 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
|
2828 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2829 if (! NILP (bar->next)) |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2830 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
|
2831 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2832 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
|
2833 bar->prev = Qnil; |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2834 XSETVECTOR (FRAME_SCROLL_BARS (f), bar); |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2835 if (! NILP (bar->next)) |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2836 XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar); |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2837 } |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2838 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2839 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2840 /* 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
|
2841 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
|
2842 static void |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2843 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
|
2844 FRAME_PTR f; |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2845 { |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2846 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
|
2847 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2848 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
|
2849 |
5752a95053f2
* xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents:
1793
diff
changeset
|
2850 /* 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
|
2851 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
|
2852 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
|
2853 |
5752a95053f2
* xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents:
1793
diff
changeset
|
2854 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
|
2855 { |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2856 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
|
2857 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2858 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
|
2859 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2860 next = b->next; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2861 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
|
2862 } |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2863 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2864 /* 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
|
2865 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
|
2866 } |
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 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2869 /* 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
|
2870 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2871 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
|
2872 mark bits. */ |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2873 static void |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2874 x_scroll_bar_expose (bar, event) |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2875 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
|
2876 XEvent *event; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2877 { |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2878 Window w = SCROLL_BAR_X_WINDOW (bar); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2879 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
2880 GC gc = f->output_data.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
|
2881 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2882 BLOCK_INPUT; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2883 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2884 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
|
2885 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2886 /* Draw a one-pixel border just inside the edges of the scroll bar. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2887 XDrawRectangle (FRAME_X_DISPLAY (f), w, gc, |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2888 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2889 /* 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
|
2890 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
|
2891 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2892 UNBLOCK_INPUT; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2893 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2894 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2895 /* 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
|
2896 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
|
2897 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2898 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
|
2899 mark bits. */ |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2900 static void |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2901 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
|
2902 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
|
2903 XEvent *event; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2904 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
|
2905 { |
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2906 if (! GC_WINDOWP (bar->window)) |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2907 abort (); |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2908 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2909 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
|
2910 emacs_event->code = event->xbutton.button - Button1; |
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2911 emacs_event->modifiers |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2912 = (x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2913 (XFRAME (WINDOW_FRAME (XWINDOW (bar->window)))), |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2914 event->xbutton.state) |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2915 | (event->type == ButtonRelease |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2916 ? up_modifier |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2917 : down_modifier)); |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2918 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
|
2919 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
|
2920 { |
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2921 int internal_height |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2922 = VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (XINT (bar->height)); |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2923 int top_range |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
2924 = VERTICAL_SCROLL_BAR_TOP_RANGE (XINT (bar->height)); |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2925 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
|
2926 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2927 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
|
2928 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
|
2929 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2930 if (y < XINT (bar->start)) |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2931 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
|
2932 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
|
2933 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
|
2934 else |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2935 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
|
2936 |
5440f00480e6
* xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents:
2923
diff
changeset
|
2937 /* 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
|
2938 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
|
2939 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
|
2940 #if 0 |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2941 /* 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
|
2942 holding it. */ |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2943 if (event->type == ButtonPress |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2944 && emacs_event->part == scroll_bar_handle) |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2945 XSETINT (bar->dragging, 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
|
2946 #endif |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2947 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2948 /* 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
|
2949 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
|
2950 && ! NILP (bar->dragging)) |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2951 { |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2952 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
|
2953 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
|
2954 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2955 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
|
2956 bar->dragging = Qnil; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2957 } |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2958 |
2958
3124e6244d1a
* xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents:
2953
diff
changeset
|
2959 /* 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
|
2960 #if 0 |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
2961 /* 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
|
2962 the handle. */ |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2963 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
|
2964 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
|
2965 else |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2966 XSETINT (emacs_event->x, y); |
2958
3124e6244d1a
* xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents:
2953
diff
changeset
|
2967 #else |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2968 XSETINT (emacs_event->x, y); |
2958
3124e6244d1a
* xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents:
2953
diff
changeset
|
2969 #endif |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2970 |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2971 XSETINT (emacs_event->y, top_range); |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2972 } |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2973 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2974 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2975 /* 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
|
2976 |
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2977 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
|
2978 mark bits. */ |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2979 static void |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2980 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
|
2981 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
|
2982 XEvent *event; |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2983 { |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
2984 FRAME_PTR f = XFRAME (XWINDOW (bar->window)->frame); |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
2985 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2986 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
|
2987 |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
2988 f->mouse_moved = 1; |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
2989 XSETVECTOR (last_mouse_scroll_bar, bar); |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2990 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2991 /* 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
|
2992 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
|
2993 { |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
2994 /* 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
|
2995 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
|
2996 |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2997 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
|
2998 { |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
2999 int new_end = new_start + (XINT (bar->end) - XINT (bar->start)); |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3000 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3001 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
|
3002 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3003 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3004 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3005 /* 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
|
3006 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
|
3007 { |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3008 int dummy; |
8279
4cde734c20e8
(note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents:
8164
diff
changeset
|
3009 Window dummy_window; |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3010 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3011 XQueryPointer (event->xmotion.display, event->xmotion.window, |
8279
4cde734c20e8
(note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents:
8164
diff
changeset
|
3012 &dummy_window, &dummy_window, |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3013 &dummy, &dummy, &dummy, &dummy, |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3014 (unsigned int *) &dummy); |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3015 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3016 } |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3017 |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3018 /* 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
|
3019 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
|
3020 static void |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3021 x_scroll_bar_report_motion (fp, bar_window, part, x, y, time) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3022 FRAME_PTR *fp; |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3023 Lisp_Object *bar_window; |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3024 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
|
3025 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
|
3026 unsigned long *time; |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3027 { |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3028 struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3029 Window w = SCROLL_BAR_X_WINDOW (bar); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3030 FRAME_PTR f = 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
|
3031 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
|
3032 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
|
3033 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
|
3034 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
|
3035 |
1803
5752a95053f2
* xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents:
1793
diff
changeset
|
3036 BLOCK_INPUT; |
5752a95053f2
* xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents:
1793
diff
changeset
|
3037 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3038 /* 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
|
3039 report that. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3040 if (! XQueryPointer (FRAME_X_DISPLAY (f), w, |
2982
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3041 |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3042 /* 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
|
3043 &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
|
3044 &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
|
3045 |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3046 /* 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
|
3047 &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
|
3048 |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3049 /* 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
|
3050 &dummy_mask)) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3051 ; |
2982
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3052 else |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3053 { |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3054 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
|
3055 = 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
|
3056 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
|
3057 = 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
|
3058 |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3059 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
|
3060 |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3061 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
|
3062 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
|
3063 |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3064 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
|
3065 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
|
3066 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
|
3067 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
|
3068 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3069 *fp = f; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3070 *bar_window = bar->window; |
2982
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3071 |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3072 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
|
3073 *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
|
3074 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
|
3075 *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
|
3076 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
|
3077 *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
|
3078 else |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3079 *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
|
3080 |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
3081 XSETINT (*x, win_y); |
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
3082 XSETINT (*y, top_range); |
2982
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3083 |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
3084 f->mouse_moved = 0; |
2982
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3085 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
|
3086 } |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3087 |
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
3088 *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
|
3089 |
1803
5752a95053f2
* xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents:
1793
diff
changeset
|
3090 UNBLOCK_INPUT; |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3091 } |
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3092 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3093 |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3094 /* 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
|
3095 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
|
3096 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
|
3097 redraw them. */ |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3098 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3099 x_scroll_bar_clear (f) |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3100 FRAME_PTR f; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3101 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3102 Lisp_Object bar; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3103 |
9101
1cd322ea379a
(x_scroll_bar_clear): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents:
9011
diff
changeset
|
3104 for (bar = FRAME_SCROLL_BARS (f); VECTORP (bar); |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3105 bar = XSCROLL_BAR (bar)->next) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3106 XClearArea (FRAME_X_DISPLAY (f), SCROLL_BAR_X_WINDOW (XSCROLL_BAR (bar)), |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3107 0, 0, 0, 0, True); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3108 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3109 |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3110 /* This processes Expose events from the menubar specific X event |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3111 loop in xmenu.c. This allows to redisplay the frame if necessary |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3112 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
|
3113 |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3114 void |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3115 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
|
3116 XEvent event; |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3117 { |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3118 FRAME_PTR f; |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3119 struct x_display_info *dpyinfo; |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3120 |
5872
6389c826f847
(x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents:
5825
diff
changeset
|
3121 BLOCK_INPUT; |
6389c826f847
(x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents:
5825
diff
changeset
|
3122 |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3123 dpyinfo = x_display_info_for_display (event.xexpose.display); |
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3124 f = x_window_to_frame (dpyinfo, event.xexpose.window); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3125 if (f) |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3126 { |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3127 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
|
3128 { |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3129 f->async_visible = 1; |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3130 f->async_iconified = 0; |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3131 SET_FRAME_GARBAGED (f); |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3132 } |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3133 else |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3134 { |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3135 dumprectangle (x_window_to_frame (dpyinfo, event.xexpose.window), |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3136 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
|
3137 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
|
3138 } |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3139 } |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3140 else |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3141 { |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3142 struct scroll_bar *bar |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3143 = x_window_to_scroll_bar (event.xexpose.window); |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3144 |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3145 if (bar) |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3146 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
|
3147 } |
5872
6389c826f847
(x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents:
5825
diff
changeset
|
3148 |
6389c826f847
(x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents:
5825
diff
changeset
|
3149 UNBLOCK_INPUT; |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3150 } |
8353
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3151 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3152 /* Define a queue to save up SelectionRequest events for later handling. */ |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3153 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3154 struct selection_event_queue |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3155 { |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3156 XEvent event; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3157 struct selection_event_queue *next; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3158 }; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3159 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3160 static struct selection_event_queue *queue; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3161 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3162 /* Nonzero means queue up certain events--don't process them yet. */ |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3163 static int x_queue_selection_requests; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3164 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3165 /* Queue up an X event *EVENT, to be processed later. */ |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3166 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3167 static void |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3168 x_queue_event (f, event) |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3169 FRAME_PTR f; |
8353
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3170 XEvent *event; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3171 { |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3172 struct selection_event_queue *queue_tmp |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3173 = (struct selection_event_queue *) malloc (sizeof (struct selection_event_queue)); |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3174 |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3175 if (queue_tmp != NULL) |
8353
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3176 { |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3177 queue_tmp->event = *event; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3178 queue_tmp->next = queue; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3179 queue = queue_tmp; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3180 } |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3181 } |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3182 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3183 /* Take all the queued events and put them back |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3184 so that they get processed afresh. */ |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3185 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3186 static void |
10634
de7beeb9f02c
(x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents:
10609
diff
changeset
|
3187 x_unqueue_events (display) |
de7beeb9f02c
(x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents:
10609
diff
changeset
|
3188 Display *display; |
8353
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3189 { |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3190 while (queue != NULL) |
8353
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3191 { |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3192 struct selection_event_queue *queue_tmp = queue; |
10634
de7beeb9f02c
(x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents:
10609
diff
changeset
|
3193 XPutBackEvent (display, &queue_tmp->event); |
8353
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3194 queue = queue_tmp->next; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3195 free ((char *)queue_tmp); |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3196 } |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3197 } |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3198 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3199 /* Start queuing SelectionRequest events. */ |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3200 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3201 void |
10634
de7beeb9f02c
(x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents:
10609
diff
changeset
|
3202 x_start_queuing_selection_requests (display) |
de7beeb9f02c
(x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents:
10609
diff
changeset
|
3203 Display *display; |
8353
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3204 { |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3205 x_queue_selection_requests++; |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3206 } |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3207 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3208 /* Stop queuing SelectionRequest events. */ |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3209 |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3210 void |
10634
de7beeb9f02c
(x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents:
10609
diff
changeset
|
3211 x_stop_queuing_selection_requests (display) |
de7beeb9f02c
(x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents:
10609
diff
changeset
|
3212 Display *display; |
8353
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3213 { |
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3214 x_queue_selection_requests--; |
10634
de7beeb9f02c
(x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents:
10609
diff
changeset
|
3215 x_unqueue_events (display); |
8353
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
3216 } |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3217 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3218 /* The main X event-reading loop - XTread_socket. */ |
286 | 3219 |
3220 /* Timestamp of enter window event. This is only used by XTread_socket, | |
3221 but we have to put it out here, since static variables within functions | |
3222 sometimes don't work. */ | |
3223 static Time enter_timestamp; | |
3224 | |
1436
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
3225 /* This holds the state XLookupString needs to implement dead keys |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3226 and other tricks known as "compose processing". _X Window System_ |
1436
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
3227 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
|
3228 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
|
3229 |
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
3230 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
|
3231 given for enter_timestamp, above. */ |
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
3232 static XComposeStatus compose_status; |
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
3233 |
2064 | 3234 /* Record the last 100 characters stored |
3235 to help debug the loss-of-chars-during-GC problem. */ | |
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
3236 static int temp_index; |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
3237 static short temp_buffer[100]; |
2064 | 3238 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3239 /* Set this to nonzero to fake an "X I/O error" |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3240 on a particular display. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3241 struct x_display_info *XTread_socket_fake_io_error; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3242 |
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
3243 /* When we find no input here, we occasionally do a no-op command |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
3244 to verify that the X server is still running and we can still talk with it. |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
3245 We try all the open displays, one by one. |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
3246 This variable is used for cycling thru the displays. */ |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
3247 static struct x_display_info *next_noop_dpyinfo; |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
3248 |
286 | 3249 /* Read events coming from the X server. |
3250 This routine is called by the SIGIO handler. | |
3251 We return as soon as there are no more events to be read. | |
3252 | |
3253 Events representing keys are stored in buffer BUFP, | |
3254 which can hold up to NUMCHARS characters. | |
3255 We return the number of characters stored into the buffer, | |
3256 thus pretending to be `read'. | |
3257 | |
3258 WAITP is nonzero if we should block until input arrives. | |
3259 EXPECTED is nonzero if the caller knows input is available. */ | |
3260 | |
1530
a7f8a1fe258e
* xterm.c (x_convert_modifiers): Declare this to return an
Jim Blandy <jimb@redhat.com>
parents:
1436
diff
changeset
|
3261 int |
286 | 3262 XTread_socket (sd, bufp, numchars, waitp, expected) |
3263 register int sd; | |
3264 register struct input_event *bufp; | |
3265 register int numchars; | |
3266 int waitp; | |
3267 int expected; | |
3268 { | |
3269 int count = 0; | |
3270 int nbytes = 0; | |
3271 int mask; | |
3272 int items_pending; /* How many items are in the X queue. */ | |
3273 XEvent event; | |
771 | 3274 struct frame *f; |
3938
83d870a52936
* xterm.c (XTread_socket): Initialize event_found to zero, and
Jim Blandy <jimb@redhat.com>
parents:
3924
diff
changeset
|
3275 int event_found = 0; |
286 | 3276 int prefix; |
3277 Lisp_Object part; | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3278 struct x_display_info *dpyinfo; |
13232
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3279 #ifdef HAVE_X_I18N |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3280 Status status_return; |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3281 #endif |
286 | 3282 |
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2353
diff
changeset
|
3283 if (interrupt_input_blocked) |
286 | 3284 { |
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2353
diff
changeset
|
3285 interrupt_input_pending = 1; |
286 | 3286 return -1; |
3287 } | |
3288 | |
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2353
diff
changeset
|
3289 interrupt_input_pending = 0; |
286 | 3290 BLOCK_INPUT; |
9337
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
3291 |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
3292 /* So people can tell when we have read the available input. */ |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
3293 input_signal_count++; |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
3294 |
286 | 3295 if (numchars <= 0) |
3296 abort (); /* Don't think this happens. */ | |
3297 | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3298 /* Find the display we are supposed to read input for. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3299 It's the one communicating on descriptor SD. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3300 for (dpyinfo = x_display_list; dpyinfo; dpyinfo = dpyinfo->next) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3301 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3302 #if 0 /* This ought to be unnecessary; let's verify it. */ |
286 | 3303 #ifdef FIOSNBIO |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3304 /* If available, Xlib uses FIOSNBIO to make the socket |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3305 non-blocking, and then looks for EWOULDBLOCK. If O_NDELAY is set, |
14165
65e51231924e
(XTread_socket): For selection_clear_event and
Richard M. Stallman <rms@gnu.org>
parents:
13898
diff
changeset
|
3306 FIOSNBIO is ignored, and instead of signaling EWOULDBLOCK, |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3307 a read returns 0, which Xlib interprets as equivalent to EPIPE. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3308 fcntl (dpyinfo->connection, 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
|
3309 #endif /* ! defined (FIOSNBIO) */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3310 #endif |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3311 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3312 #if 0 /* This code can't be made to work, with multiple displays, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3313 and appears not to be used on any system any more. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3314 Also keyboard.c doesn't turn O_NDELAY on and off |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3315 for X connections. */ |
286 | 3316 #ifndef SIGIO |
3317 #ifndef HAVE_SELECT | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3318 if (! (fcntl (dpyinfo->connection, F_GETFL, 0) & O_NDELAY)) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3319 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3320 extern int read_alarm_should_throw; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3321 read_alarm_should_throw = 1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3322 XPeekEvent (dpyinfo->display, &event); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3323 read_alarm_should_throw = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3324 } |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
3325 #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
|
3326 #endif /* SIGIO */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3327 #endif |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3328 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3329 /* For debugging, this gives a way to fake an I/O error. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3330 if (dpyinfo == XTread_socket_fake_io_error) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3331 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3332 XTread_socket_fake_io_error = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3333 x_io_error_quitter (dpyinfo->display); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3334 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3335 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3336 while (XPending (dpyinfo->display) != 0) |
286 | 3337 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3338 XNextEvent (dpyinfo->display, &event); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3339 event_found = 1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3340 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3341 switch (event.type) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3342 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3343 case ClientMessage: |
642 | 3344 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3345 if (event.xclient.message_type |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3346 == dpyinfo->Xatom_wm_protocols |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3347 && event.xclient.format == 32) |
642 | 3348 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3349 if (event.xclient.data.l[0] |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3350 == dpyinfo->Xatom_wm_take_focus) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3351 { |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3352 f = x_window_to_frame (dpyinfo, event.xclient.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3353 /* Since we set WM_TAKE_FOCUS, we must call |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3354 XSetInputFocus explicitly. But not if f is null, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3355 since that might be an event for a deleted frame. */ |
13232
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3356 #ifdef HAVE_X_I18N |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3357 /* Not quite sure this is needed -pd */ |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3358 if (f) |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3359 XSetICFocus (FRAME_XIC (f)); |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3360 #endif |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3361 if (f) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3362 XSetInputFocus (event.xclient.display, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3363 event.xclient.window, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3364 RevertToPointerRoot, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3365 event.xclient.data.l[1]); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3366 /* Not certain about handling scroll bars here */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3367 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3368 else if (event.xclient.data.l[0] |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3369 == dpyinfo->Xatom_wm_save_yourself) |
642 | 3370 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3371 /* Save state modify the WM_COMMAND property to |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3372 something which can reinstate us. This notifies |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3373 the session manager, who's looking for such a |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3374 PropertyNotify. Can restart processing when |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3375 a keyboard or mouse event arrives. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3376 if (numchars > 0) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3377 { |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3378 f = x_top_window_to_frame (dpyinfo, |
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3379 event.xclient.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3380 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3381 /* This is just so we only give real data once |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3382 for a single Emacs process. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3383 if (f == selected_frame) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3384 XSetCommand (FRAME_X_DISPLAY (f), |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3385 event.xclient.window, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3386 initial_argv, initial_argc); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3387 else |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3388 XSetCommand (FRAME_X_DISPLAY (f), |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3389 event.xclient.window, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3390 0, 0); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3391 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3392 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3393 else if (event.xclient.data.l[0] |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3394 == dpyinfo->Xatom_wm_delete_window) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3395 { |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3396 struct frame *f |
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3397 = x_any_window_to_frame (dpyinfo, |
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3398 event.xclient.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3399 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3400 if (f) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3401 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3402 if (numchars == 0) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3403 abort (); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3404 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3405 bufp->kind = delete_window_event; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3406 XSETFRAME (bufp->frame_or_window, f); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3407 bufp++; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3408 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3409 count += 1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3410 numchars -= 1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3411 } |
642 | 3412 } |
3413 } | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3414 else if (event.xclient.message_type |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3415 == dpyinfo->Xatom_wm_configure_denied) |
642 | 3416 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3417 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3418 else if (event.xclient.message_type |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3419 == dpyinfo->Xatom_wm_window_moved) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3420 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3421 int new_x, new_y; |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3422 struct frame *f |
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3423 = x_window_to_frame (dpyinfo, event.xclient.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3424 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3425 new_x = event.xclient.data.s[0]; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3426 new_y = event.xclient.data.s[1]; |
771 | 3427 |
3428 if (f) | |
5156
fd78458b8c43
(XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents:
5018
diff
changeset
|
3429 { |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3430 f->output_data.x->left_pos = new_x; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3431 f->output_data.x->top_pos = new_y; |
5156
fd78458b8c43
(XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents:
5018
diff
changeset
|
3432 } |
642 | 3433 } |
13507
9a9f459075af
(HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
3434 #ifdef HACK_EDITRES |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3435 else if (event.xclient.message_type |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3436 == dpyinfo->Xatom_editres) |
5156
fd78458b8c43
(XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents:
5018
diff
changeset
|
3437 { |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3438 struct frame *f |
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3439 = x_any_window_to_frame (dpyinfo, event.xclient.window); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3440 _XEditResCheckMessages (f->output_data.x->widget, NULL, |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3441 &event, NULL); |
5156
fd78458b8c43
(XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents:
5018
diff
changeset
|
3442 } |
13507
9a9f459075af
(HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
3443 #endif /* HACK_EDITRES */ |
642 | 3444 } |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3445 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3446 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3447 case SelectionNotify: |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3448 #ifdef USE_X_TOOLKIT |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3449 if (! x_window_to_frame (dpyinfo, event.xselection.requestor)) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3450 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3451 #endif /* not USE_X_TOOLKIT */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3452 x_handle_selection_notify (&event); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3453 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3454 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3455 case SelectionClear: /* Someone has grabbed ownership. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3456 #ifdef USE_X_TOOLKIT |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3457 if (! x_window_to_frame (dpyinfo, event.xselectionclear.window)) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3458 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3459 #endif /* USE_X_TOOLKIT */ |
6941
a914781ef58a
(Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents:
6934
diff
changeset
|
3460 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3461 XSelectionClearEvent *eventp = (XSelectionClearEvent *) &event; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3462 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3463 if (numchars == 0) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3464 abort (); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3465 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3466 bufp->kind = selection_clear_event; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3467 SELECTION_EVENT_DISPLAY (bufp) = eventp->display; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3468 SELECTION_EVENT_SELECTION (bufp) = eventp->selection; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3469 SELECTION_EVENT_TIME (bufp) = eventp->time; |
14165
65e51231924e
(XTread_socket): For selection_clear_event and
Richard M. Stallman <rms@gnu.org>
parents:
13898
diff
changeset
|
3470 bufp->frame_or_window = Qnil; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3471 bufp++; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3472 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3473 count += 1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3474 numchars -= 1; |
6941
a914781ef58a
(Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents:
6934
diff
changeset
|
3475 } |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3476 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3477 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3478 case SelectionRequest: /* Someone wants our selection. */ |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3479 #ifdef USE_X_TOOLKIT |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3480 if (!x_window_to_frame (dpyinfo, event.xselectionrequest.owner)) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3481 goto OTHER; |
6984
8e9465c13702
(XTread_socket): Delete the non-NEW_SELECTIONS code
Richard M. Stallman <rms@gnu.org>
parents:
6983
diff
changeset
|
3482 #endif /* USE_X_TOOLKIT */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3483 if (x_queue_selection_requests) |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3484 x_queue_event (x_window_to_frame (dpyinfo, event.xselectionrequest.owner), |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3485 &event); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3486 else |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3487 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3488 XSelectionRequestEvent *eventp = (XSelectionRequestEvent *) &event; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3489 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3490 if (numchars == 0) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3491 abort (); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3492 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3493 bufp->kind = selection_request_event; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3494 SELECTION_EVENT_DISPLAY (bufp) = eventp->display; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3495 SELECTION_EVENT_REQUESTOR (bufp) = eventp->requestor; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3496 SELECTION_EVENT_SELECTION (bufp) = eventp->selection; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3497 SELECTION_EVENT_TARGET (bufp) = eventp->target; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3498 SELECTION_EVENT_PROPERTY (bufp) = eventp->property; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3499 SELECTION_EVENT_TIME (bufp) = eventp->time; |
14165
65e51231924e
(XTread_socket): For selection_clear_event and
Richard M. Stallman <rms@gnu.org>
parents:
13898
diff
changeset
|
3500 bufp->frame_or_window = Qnil; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3501 bufp++; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3502 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3503 count += 1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3504 numchars -= 1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3505 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3506 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3507 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3508 case PropertyNotify: |
6984
8e9465c13702
(XTread_socket): Delete the non-NEW_SELECTIONS code
Richard M. Stallman <rms@gnu.org>
parents:
6983
diff
changeset
|
3509 #ifdef USE_X_TOOLKIT |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3510 if (!x_any_window_to_frame (dpyinfo, event.xproperty.window)) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3511 goto OTHER; |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3512 #endif /* not USE_X_TOOLKIT */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3513 x_handle_property_notify (&event); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3514 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3515 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3516 case ReparentNotify: |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3517 f = x_top_window_to_frame (dpyinfo, event.xreparent.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3518 if (f) |
286 | 3519 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3520 int x, y; |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3521 f->output_data.x->parent_desc = event.xreparent.parent; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3522 x_real_positions (f, &x, &y); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3523 f->output_data.x->left_pos = x; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3524 f->output_data.x->top_pos = y; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3525 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3526 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3527 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3528 case Expose: |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3529 f = x_window_to_frame (dpyinfo, event.xexpose.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3530 if (f) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3531 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3532 if (f->async_visible == 0) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3533 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3534 f->async_visible = 1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3535 f->async_iconified = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3536 SET_FRAME_GARBAGED (f); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3537 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3538 else |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3539 dumprectangle (x_window_to_frame (dpyinfo, |
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3540 event.xexpose.window), |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3541 event.xexpose.x, event.xexpose.y, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3542 event.xexpose.width, event.xexpose.height); |
286 | 3543 } |
3544 else | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3545 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3546 struct scroll_bar *bar |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3547 = x_window_to_scroll_bar (event.xexpose.window); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3548 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3549 if (bar) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3550 x_scroll_bar_expose (bar, &event); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3551 #ifdef USE_X_TOOLKIT |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3552 else |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3553 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3554 #endif /* USE_X_TOOLKIT */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3555 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3556 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3557 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3558 case GraphicsExpose: /* This occurs when an XCopyArea's |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3559 source area was obscured or not |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3560 available.*/ |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3561 f = x_window_to_frame (dpyinfo, event.xgraphicsexpose.drawable); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3562 if (f) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3563 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3564 dumprectangle (f, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3565 event.xgraphicsexpose.x, event.xgraphicsexpose.y, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3566 event.xgraphicsexpose.width, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3567 event.xgraphicsexpose.height); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3568 } |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3569 #ifdef USE_X_TOOLKIT |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3570 else |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3571 goto OTHER; |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3572 #endif /* USE_X_TOOLKIT */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3573 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3574 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3575 case NoExpose: /* This occurs when an XCopyArea's |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3576 source area was completely |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3577 available */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3578 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3579 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3580 case UnmapNotify: |
12750
7e5276da6270
(XTread_socket): For UnmapNotify, use x_top_window_to_frame.
Richard M. Stallman <rms@gnu.org>
parents:
12667
diff
changeset
|
3581 f = x_top_window_to_frame (dpyinfo, event.xunmap.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3582 if (f) /* F may no longer exist if |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3583 the frame was deleted. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3584 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3585 /* While a frame is unmapped, display generation is |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3586 disabled; you don't want to spend time updating a |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3587 display that won't ever be seen. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3588 f->async_visible = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3589 /* We can't distinguish, from the event, whether the window |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3590 has become iconified or invisible. So assume, if it |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3591 was previously visible, than now it is iconified. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3592 We depend on x_make_frame_invisible to mark it iconified. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3593 if (FRAME_VISIBLE_P (f) || FRAME_ICONIFIED_P (f)) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3594 f->async_iconified = 1; |
9823
e6dbda62fd61
(XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents:
9763
diff
changeset
|
3595 |
e6dbda62fd61
(XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents:
9763
diff
changeset
|
3596 bufp->kind = iconify_event; |
e6dbda62fd61
(XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents:
9763
diff
changeset
|
3597 XSETFRAME (bufp->frame_or_window, f); |
e6dbda62fd61
(XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents:
9763
diff
changeset
|
3598 bufp++; |
e6dbda62fd61
(XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents:
9763
diff
changeset
|
3599 count++; |
e6dbda62fd61
(XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents:
9763
diff
changeset
|
3600 numchars--; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3601 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3602 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3603 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3604 case MapNotify: |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3605 /* We use x_top_window_to_frame because map events can come |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3606 for subwindows and they don't mean that the frame is visible. */ |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3607 f = x_top_window_to_frame (dpyinfo, event.xmap.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3608 if (f) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3609 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3610 f->async_visible = 1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3611 f->async_iconified = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3612 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3613 /* wait_reading_process_input will notice this and update |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3614 the frame's display structures. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3615 SET_FRAME_GARBAGED (f); |
9823
e6dbda62fd61
(XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents:
9763
diff
changeset
|
3616 |
11348
e366abc2c753
(XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents:
11259
diff
changeset
|
3617 if (f->iconified) |
e366abc2c753
(XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents:
11259
diff
changeset
|
3618 { |
e366abc2c753
(XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents:
11259
diff
changeset
|
3619 bufp->kind = deiconify_event; |
e366abc2c753
(XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents:
11259
diff
changeset
|
3620 XSETFRAME (bufp->frame_or_window, f); |
e366abc2c753
(XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents:
11259
diff
changeset
|
3621 bufp++; |
e366abc2c753
(XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents:
11259
diff
changeset
|
3622 count++; |
e366abc2c753
(XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents:
11259
diff
changeset
|
3623 numchars--; |
e366abc2c753
(XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents:
11259
diff
changeset
|
3624 } |
14895
634fc7befbdf
(XTread_socket, MapNotify case):
Richard M. Stallman <rms@gnu.org>
parents:
14830
diff
changeset
|
3625 else if (! NILP(Vframe_list) |
634fc7befbdf
(XTread_socket, MapNotify case):
Richard M. Stallman <rms@gnu.org>
parents:
14830
diff
changeset
|
3626 && ! NILP (XCONS (Vframe_list)->cdr)) |
11921
6ecaa3fac4e4
(XTread_socket): For MapNotify, call record_asynch_buffer_change.
Karl Heuer <kwzh@gnu.org>
parents:
11915
diff
changeset
|
3627 /* Force a redisplay sooner or later |
6ecaa3fac4e4
(XTread_socket): For MapNotify, call record_asynch_buffer_change.
Karl Heuer <kwzh@gnu.org>
parents:
11915
diff
changeset
|
3628 to update the frame titles |
6ecaa3fac4e4
(XTread_socket): For MapNotify, call record_asynch_buffer_change.
Karl Heuer <kwzh@gnu.org>
parents:
11915
diff
changeset
|
3629 in case this is the second frame. */ |
6ecaa3fac4e4
(XTread_socket): For MapNotify, call record_asynch_buffer_change.
Karl Heuer <kwzh@gnu.org>
parents:
11915
diff
changeset
|
3630 record_asynch_buffer_change (); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3631 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3632 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3633 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3634 /* Turn off processing if we become fully obscured. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3635 case VisibilityNotify: |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3636 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3637 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3638 case KeyPress: |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3639 f = x_any_window_to_frame (dpyinfo, event.xkey.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3640 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3641 if (f != 0) |
286 | 3642 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3643 KeySym keysym, orig_keysym; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3644 /* al%imercury@uunet.uu.net says that making this 81 instead of |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3645 80 fixed a bug whereby meta chars made his Emacs hang. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3646 unsigned char copy_buffer[81]; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3647 int modifiers; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3648 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3649 event.xkey.state |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3650 |= x_emacs_to_x_modifiers (FRAME_X_DISPLAY_INFO (f), |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3651 extra_keyboard_modifiers); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3652 modifiers = event.xkey.state; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3653 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3654 /* This will have to go some day... */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3655 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3656 /* make_lispy_event turns chars into control chars. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3657 Don't do it here because XLookupString is too eager. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3658 event.xkey.state &= ~ControlMask; |
12431
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
3659 event.xkey.state &= ~(dpyinfo->meta_mod_mask |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
3660 | dpyinfo->super_mod_mask |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
3661 | dpyinfo->hyper_mod_mask |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
3662 | dpyinfo->alt_mod_mask); |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
3663 |
13232
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3664 #ifdef HAVE_X_I18N |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3665 if (FRAME_XIC (f)) |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3666 { |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3667 /* The necessity of the following line took me |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3668 a full work-day to decipher from the docs!! */ |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3669 if (XFilterEvent (&event, None)) |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3670 break; |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3671 nbytes = XmbLookupString (FRAME_XIC (f), |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3672 &event.xkey, copy_buffer, |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3673 80, &keysym, |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3674 &status_return); |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3675 } |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3676 else |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3677 nbytes = XLookupString (&event.xkey, copy_buffer, |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3678 80, &keysym, &compose_status); |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3679 #else |
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
3680 nbytes = XLookupString (&event.xkey, copy_buffer, |
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
3681 80, &keysym, &compose_status); |
13232
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3682 #endif |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3683 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3684 orig_keysym = keysym; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3685 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3686 if (numchars > 1) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3687 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3688 if (((keysym >= XK_BackSpace && keysym <= XK_Escape) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3689 || keysym == XK_Delete |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3690 || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3691 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */ |
3218
0069a30d083f
(XTread_socket, case KeyPress) [HPUX]:
Richard M. Stallman <rms@gnu.org>
parents:
3135
diff
changeset
|
3692 #ifdef HPUX |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3693 /* This recognizes the "extended function keys". |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3694 It seems there's no cleaner way. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3695 Test IsModifierKey to avoid handling mode_switch |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3696 incorrectly. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3697 || ((unsigned) (keysym) >= XK_Select |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3698 && (unsigned)(keysym) < XK_KP_Space) |
3218
0069a30d083f
(XTread_socket, case KeyPress) [HPUX]:
Richard M. Stallman <rms@gnu.org>
parents:
3135
diff
changeset
|
3699 #endif |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3700 #ifdef XK_dead_circumflex |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3701 || orig_keysym == XK_dead_circumflex |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3702 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3703 #ifdef XK_dead_grave |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3704 || orig_keysym == XK_dead_grave |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3705 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3706 #ifdef XK_dead_tilde |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3707 || orig_keysym == XK_dead_tilde |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3708 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3709 #ifdef XK_dead_diaeresis |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3710 || orig_keysym == XK_dead_diaeresis |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3711 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3712 #ifdef XK_dead_macron |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3713 || orig_keysym == XK_dead_macron |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3714 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3715 #ifdef XK_dead_degree |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3716 || orig_keysym == XK_dead_degree |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3717 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3718 #ifdef XK_dead_acute |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3719 || orig_keysym == XK_dead_acute |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3720 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3721 #ifdef XK_dead_cedilla |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3722 || orig_keysym == XK_dead_cedilla |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3723 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3724 #ifdef XK_dead_breve |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3725 || orig_keysym == XK_dead_breve |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3726 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3727 #ifdef XK_dead_ogonek |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3728 || orig_keysym == XK_dead_ogonek |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3729 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3730 #ifdef XK_dead_caron |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3731 || orig_keysym == XK_dead_caron |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3732 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3733 #ifdef XK_dead_doubleacute |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3734 || orig_keysym == XK_dead_doubleacute |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3735 #endif |
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3736 #ifdef XK_dead_abovedot |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3737 || orig_keysym == XK_dead_abovedot |
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3738 #endif |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3739 || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3740 || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3741 /* Any "vendor-specific" key is ok. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3742 || (orig_keysym & (1 << 28))) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3743 && ! (IsModifierKey (orig_keysym) |
4244
bc70363458c3
(XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents:
4147
diff
changeset
|
3744 #ifndef HAVE_X11R5 |
bc70363458c3
(XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents:
4147
diff
changeset
|
3745 #ifdef XK_Mode_switch |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3746 || ((unsigned)(orig_keysym) == XK_Mode_switch) |
4244
bc70363458c3
(XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents:
4147
diff
changeset
|
3747 #endif |
bc70363458c3
(XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents:
4147
diff
changeset
|
3748 #ifdef XK_Num_Lock |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3749 || ((unsigned)(orig_keysym) == XK_Num_Lock) |
4244
bc70363458c3
(XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents:
4147
diff
changeset
|
3750 #endif |
bc70363458c3
(XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents:
4147
diff
changeset
|
3751 #endif /* not HAVE_X11R5 */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3752 )) |
286 | 3753 { |
2064 | 3754 if (temp_index == sizeof temp_buffer / sizeof (short)) |
3755 temp_index = 0; | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3756 temp_buffer[temp_index++] = keysym; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3757 bufp->kind = non_ascii_keystroke; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3758 bufp->code = keysym; |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
3759 XSETFRAME (bufp->frame_or_window, f); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3760 bufp->modifiers |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3761 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3762 modifiers); |
708 | 3763 bufp->timestamp = event.xkey.time; |
286 | 3764 bufp++; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3765 count++; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3766 numchars--; |
286 | 3767 } |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3768 else if (numchars > nbytes) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3769 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3770 register int i; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3771 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3772 for (i = 0; i < nbytes; i++) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3773 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3774 if (temp_index == sizeof temp_buffer / sizeof (short)) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3775 temp_index = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3776 temp_buffer[temp_index++] = copy_buffer[i]; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3777 bufp->kind = ascii_keystroke; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3778 bufp->code = copy_buffer[i]; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3779 XSETFRAME (bufp->frame_or_window, f); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3780 bufp->modifiers |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3781 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3782 modifiers); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3783 bufp->timestamp = event.xkey.time; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3784 bufp++; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3785 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3786 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3787 count += nbytes; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3788 numchars -= nbytes; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3789 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3790 else |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3791 abort (); |
286 | 3792 } |
2064 | 3793 else |
3794 abort (); | |
286 | 3795 } |
13898
dceb33c07f9e
(XTread_socket): Pass KeyPress events to the toolkit.
Richard M. Stallman <rms@gnu.org>
parents:
13884
diff
changeset
|
3796 goto OTHER; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3797 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3798 /* Here's a possible interpretation of the whole |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3799 FocusIn-EnterNotify FocusOut-LeaveNotify mess. If you get a |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3800 FocusIn event, you have to get a FocusOut event before you |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3801 relinquish the focus. If you haven't received a FocusIn event, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3802 then a mere LeaveNotify is enough to free you. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3803 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3804 case EnterNotify: |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3805 f = x_any_window_to_frame (dpyinfo, event.xcrossing.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3806 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3807 if (event.xcrossing.focus) /* Entered Window */ |
286 | 3808 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3809 /* Avoid nasty pop/raise loops. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3810 if (f && (!(f->auto_raise) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3811 || !(f->auto_lower) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3812 || (event.xcrossing.time - enter_timestamp) > 500)) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3813 { |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3814 x_new_focus_frame (dpyinfo, f); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3815 enter_timestamp = event.xcrossing.time; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3816 } |
286 | 3817 } |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3818 else if (f == dpyinfo->x_focus_frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3819 x_new_focus_frame (dpyinfo, 0); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3820 /* EnterNotify counts as mouse movement, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3821 so update things that depend on mouse position. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3822 if (f) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3823 note_mouse_movement (f, &event.xmotion); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3824 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3825 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3826 case FocusIn: |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3827 f = x_any_window_to_frame (dpyinfo, event.xfocus.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3828 if (event.xfocus.detail != NotifyPointer) |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3829 dpyinfo->x_focus_event_frame = f; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3830 if (f) |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3831 x_new_focus_frame (dpyinfo, f); |
13205
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
3832 |
13232
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3833 #ifdef HAVE_X_I18N |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3834 if (f && FRAME_XIC (f)) |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3835 XSetICFocus (FRAME_XIC (f)); |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3836 #endif |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3837 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3838 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3839 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3840 case LeaveNotify: |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3841 f = x_top_window_to_frame (dpyinfo, event.xcrossing.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3842 if (f) |
7169
c21fcad6f1f5
(XTread_socket): Only top window cares about LeaveNotify.
Karl Heuer <kwzh@gnu.org>
parents:
7167
diff
changeset
|
3843 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3844 if (f == dpyinfo->mouse_face_mouse_frame) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3845 /* If we move outside the frame, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3846 then we're certainly no longer on any text in the frame. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3847 clear_mouse_face (dpyinfo); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3848 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3849 if (event.xcrossing.focus) |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3850 x_mouse_leave (dpyinfo); |
7169
c21fcad6f1f5
(XTread_socket): Only top window cares about LeaveNotify.
Karl Heuer <kwzh@gnu.org>
parents:
7167
diff
changeset
|
3851 else |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3852 { |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3853 if (f == dpyinfo->x_focus_event_frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3854 dpyinfo->x_focus_event_frame = 0; |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3855 if (f == dpyinfo->x_focus_frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3856 x_new_focus_frame (dpyinfo, 0); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3857 } |
7169
c21fcad6f1f5
(XTread_socket): Only top window cares about LeaveNotify.
Karl Heuer <kwzh@gnu.org>
parents:
7167
diff
changeset
|
3858 } |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3859 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3860 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3861 case FocusOut: |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3862 f = x_any_window_to_frame (dpyinfo, event.xfocus.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3863 if (event.xfocus.detail != NotifyPointer |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3864 && f == dpyinfo->x_focus_event_frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3865 dpyinfo->x_focus_event_frame = 0; |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3866 if (f && f == dpyinfo->x_focus_frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3867 x_new_focus_frame (dpyinfo, 0); |
13205
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
3868 |
13232
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3869 #ifdef HAVE_X_I18N |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3870 if (f && FRAME_XIC (f)) |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3871 XUnsetICFocus (FRAME_XIC (f)); |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3872 #endif |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
3873 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3874 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3875 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3876 case MotionNotify: |
286 | 3877 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3878 if (dpyinfo->grabbed && last_mouse_frame |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3879 && FRAME_LIVE_P (last_mouse_frame)) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3880 f = last_mouse_frame; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3881 else |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3882 f = x_window_to_frame (dpyinfo, event.xmotion.window); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3883 if (f) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3884 note_mouse_movement (f, &event.xmotion); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3885 else |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3886 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3887 struct scroll_bar *bar |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3888 = x_window_to_scroll_bar (event.xmotion.window); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3889 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3890 if (bar) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3891 x_scroll_bar_note_movement (bar, &event); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3892 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3893 /* If we move outside the frame, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3894 then we're certainly no longer on any text in the frame. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3895 clear_mouse_face (dpyinfo); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3896 } |
286 | 3897 } |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3898 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3899 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3900 case ConfigureNotify: |
11198
571306c7b038
New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents:
11166
diff
changeset
|
3901 f = x_any_window_to_frame (dpyinfo, event.xconfigure.window); |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3902 if (f |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
3903 #ifdef USE_X_TOOLKIT |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3904 && (event.xconfigure.window == XtWindow (f->output_data.x->widget)) |
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
3905 #endif |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3906 ) |
3030
2c5ea1c98256
(XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents:
3016
diff
changeset
|
3907 { |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3908 #ifndef USE_X_TOOLKIT |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3909 /* In the toolkit version, change_frame_size |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3910 is called by the code that handles resizing |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3911 of the EmacsFrame widget. */ |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3912 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3913 int rows = PIXEL_TO_CHAR_HEIGHT (f, event.xconfigure.height); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3914 int columns = PIXEL_TO_CHAR_WIDTH (f, event.xconfigure.width); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3915 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3916 /* Even if the number of character rows and columns has |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3917 not changed, the font size may have changed, so we need |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3918 to check the pixel dimensions as well. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3919 if (columns != f->width |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3920 || rows != f->height |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3921 || event.xconfigure.width != f->output_data.x->pixel_width |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3922 || event.xconfigure.height != f->output_data.x->pixel_height) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3923 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3924 change_frame_size (f, rows, columns, 0, 1); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3925 SET_FRAME_GARBAGED (f); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3926 } |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3927 #endif |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3928 |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3929 /* Formerly, in the USE_X_TOOLKIT version, |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3930 we did not test send_event here. */ |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3931 if (1 |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3932 #ifndef USE_X_TOOLKIT |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3933 && ! event.xconfigure.send_event |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3934 #endif |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3935 ) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3936 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3937 Window win, child; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3938 int win_x, win_y; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3939 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3940 /* Find the position of the outside upper-left corner of |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3941 the window, in the root coordinate system. Don't |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3942 refer to the parent window here; we may be processing |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3943 this event after the window manager has changed our |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3944 parent, but before we have reached the ReparentNotify. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3945 XTranslateCoordinates (FRAME_X_DISPLAY (f), |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3946 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3947 /* From-window, to-window. */ |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3948 event.xconfigure.window, |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3949 FRAME_X_DISPLAY_INFO (f)->root_window, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3950 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3951 /* From-position, to-position. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3952 -event.xconfigure.border_width, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3953 -event.xconfigure.border_width, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3954 &win_x, &win_y, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3955 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3956 /* Child of win. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3957 &child); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3958 event.xconfigure.x = win_x; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3959 event.xconfigure.y = win_y; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3960 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3961 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3962 f->output_data.x->pixel_width = event.xconfigure.width; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3963 f->output_data.x->pixel_height = event.xconfigure.height; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3964 f->output_data.x->left_pos = event.xconfigure.x; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3965 f->output_data.x->top_pos = event.xconfigure.y; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3966 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3967 /* What we have now is the position of Emacs's own window. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3968 Convert that to the position of the window manager window. */ |
7738
a810335742bb
(x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents:
7706
diff
changeset
|
3969 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3970 int x, y; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3971 x_real_positions (f, &x, &y); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3972 f->output_data.x->left_pos = x; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3973 f->output_data.x->top_pos = y; |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3974 /* Formerly we did not do this in the USE_X_TOOLKIT |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3975 version. Let's try making them the same. */ |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3976 /* #ifndef USE_X_TOOLKIT */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3977 if (y != event.xconfigure.y) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3978 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3979 /* Since the WM decorations come below top_pos now, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3980 we must put them below top_pos in the future. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
3981 f->output_data.x->win_gravity = NorthWestGravity; |
11915
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
3982 x_wm_set_size_hint (f, (long) 0, 0); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3983 } |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3984 /* #endif */ |
7738
a810335742bb
(x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents:
7706
diff
changeset
|
3985 } |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3986 } |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3987 goto OTHER; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3988 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3989 case ButtonPress: |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3990 case ButtonRelease: |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3991 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3992 /* If we decide we want to generate an event to be seen |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3993 by the rest of Emacs, we put it here. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3994 struct input_event emacs_event; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3995 emacs_event.kind = no_event; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3996 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3997 bzero (&compose_status, sizeof (compose_status)); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
3998 |
10274
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
3999 if (dpyinfo->grabbed && last_mouse_frame |
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
4000 && FRAME_LIVE_P (last_mouse_frame)) |
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
4001 f = last_mouse_frame; |
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
4002 else |
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4003 f = x_window_to_frame (dpyinfo, event.xbutton.window); |
10274
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
4004 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4005 if (f) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4006 { |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
4007 if (!dpyinfo->x_focus_frame || f == dpyinfo->x_focus_frame) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4008 construct_mouse_click (&emacs_event, &event, f); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4009 } |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
4010 else |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
4011 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4012 struct scroll_bar *bar |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4013 = x_window_to_scroll_bar (event.xbutton.window); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4014 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4015 if (bar) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4016 x_scroll_bar_handle_click (bar, &event, &emacs_event); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4017 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4018 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4019 if (event.type == ButtonPress) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4020 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4021 dpyinfo->grabbed |= (1 << event.xbutton.button); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4022 last_mouse_frame = f; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4023 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4024 else |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4025 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4026 dpyinfo->grabbed &= ~(1 << event.xbutton.button); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4027 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4028 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4029 if (numchars >= 1 && emacs_event.kind != no_event) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4030 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4031 bcopy (&emacs_event, bufp, sizeof (struct input_event)); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4032 bufp++; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4033 count++; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4034 numchars--; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4035 } |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
4036 |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
4037 #ifdef USE_X_TOOLKIT |
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4038 f = x_menubar_window_to_frame (dpyinfo, event.xbutton.window); |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4039 /* For a down-event in the menu bar, |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4040 don't pass it to Xt right now. |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4041 Instead, save it away |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4042 and we will pass it to Xt from kbd_buffer_get_event. |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4043 That way, we can run some Lisp code first. */ |
13561
21b6b8f50143
(XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents:
13507
diff
changeset
|
4044 if (f && event.type == ButtonPress |
21b6b8f50143
(XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents:
13507
diff
changeset
|
4045 /* Verify the event is really within the menu bar |
21b6b8f50143
(XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents:
13507
diff
changeset
|
4046 and not just sent to it due to grabbing. */ |
21b6b8f50143
(XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents:
13507
diff
changeset
|
4047 && event.xbutton.x >= 0 |
21b6b8f50143
(XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents:
13507
diff
changeset
|
4048 && event.xbutton.x < f->output_data.x->pixel_width |
21b6b8f50143
(XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents:
13507
diff
changeset
|
4049 && event.xbutton.y >= 0 |
21b6b8f50143
(XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents:
13507
diff
changeset
|
4050 && event.xbutton.y < f->output_data.x->menubar_height |
21b6b8f50143
(XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents:
13507
diff
changeset
|
4051 && event.xbutton.same_screen) |
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4052 { |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4053 if (f->output_data.x->saved_button_event == 0) |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4054 f->output_data.x->saved_button_event |
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4055 = (XButtonEvent *) xmalloc (sizeof (XButtonEvent)); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4056 bcopy (&event, f->output_data.x->saved_button_event, |
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4057 sizeof (XButtonEvent)); |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4058 if (numchars >= 1) |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4059 { |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4060 bufp->kind = menu_bar_activate_event; |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4061 XSETFRAME (bufp->frame_or_window, f); |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4062 bufp++; |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4063 count++; |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4064 numchars--; |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4065 } |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4066 } |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4067 else |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4068 goto OTHER; |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
4069 #endif /* USE_X_TOOLKIT */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4070 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4071 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4072 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4073 case CirculateNotify: |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4074 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4075 case CirculateRequest: |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4076 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4077 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4078 case MappingNotify: |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4079 /* Someone has changed the keyboard mapping - update the |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4080 local cache. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4081 switch (event.xmapping.request) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4082 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4083 case MappingModifier: |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4084 x_find_modifier_meanings (dpyinfo); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4085 /* This is meant to fall through. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4086 case MappingKeyboard: |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4087 XRefreshKeyboardMapping (&event.xmapping); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4088 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4089 goto OTHER; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4090 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4091 default: |
13898
dceb33c07f9e
(XTread_socket): Pass KeyPress events to the toolkit.
Richard M. Stallman <rms@gnu.org>
parents:
13884
diff
changeset
|
4092 OTHER: |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4093 #ifdef USE_X_TOOLKIT |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4094 BLOCK_INPUT; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4095 XtDispatchEvent (&event); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4096 UNBLOCK_INPUT; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4097 #endif /* USE_X_TOOLKIT */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4098 break; |
1436
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
4099 } |
286 | 4100 } |
4101 } | |
4102 | |
8485
6e4b40c80021
(XTread_socket): Don't test X_IO_BUG; make that code unconditional.
Richard M. Stallman <rms@gnu.org>
parents:
8437
diff
changeset
|
4103 /* On some systems, an X bug causes Emacs to get no more events |
6e4b40c80021
(XTread_socket): Don't test X_IO_BUG; make that code unconditional.
Richard M. Stallman <rms@gnu.org>
parents:
8437
diff
changeset
|
4104 when the window is destroyed. Detect that. (1994.) */ |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
4105 if (! event_found) |
7916
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
4106 { |
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
4107 /* Emacs and the X Server eats up CPU time if XNoOp is done every time. |
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
4108 One XNOOP in 100 loops will make Emacs terminate. |
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
4109 B. Bretthauer, 1994 */ |
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
4110 x_noop_count++; |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
4111 if (x_noop_count >= 100) |
7916
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
4112 { |
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
4113 x_noop_count=0; |
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4114 |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4115 if (next_noop_dpyinfo == 0) |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4116 next_noop_dpyinfo = x_display_list; |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4117 |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4118 XNoOp (next_noop_dpyinfo->display); |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4119 |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4120 /* Each time we get here, cycle through the displays now open. */ |
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
4121 next_noop_dpyinfo = next_noop_dpyinfo->next; |
7916
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
4122 } |
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
4123 } |
5753
eb44ecad5557
(XTread_socket): Add X_IO_BUG conditional.
Richard M. Stallman <rms@gnu.org>
parents:
5740
diff
changeset
|
4124 |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
4125 /* If the focus was just given to an autoraising frame, |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
4126 raise it now. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4127 /* ??? This ought to be able to handle more than one such frame. */ |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
4128 if (pending_autoraise_frame) |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
4129 { |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
4130 x_raise_frame (pending_autoraise_frame); |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
4131 pending_autoraise_frame = 0; |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
4132 } |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
4133 |
286 | 4134 UNBLOCK_INPUT; |
4135 return count; | |
4136 } | |
4137 | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4138 /* Drawing the cursor. */ |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4139 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4140 |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4141 /* Draw a hollow box cursor on frame F at X, Y. |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4142 Don't change the inside of the box. */ |
286 | 4143 |
4144 static void | |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4145 x_draw_box (f, x, y) |
771 | 4146 struct frame *f; |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4147 int x, y; |
286 | 4148 { |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4149 int left = CHAR_TO_PIXEL_COL (f, x); |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4150 int top = CHAR_TO_PIXEL_ROW (f, y); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4151 int width = FONT_WIDTH (f->output_data.x->font); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4152 int height = f->output_data.x->line_height; |
286 | 4153 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4154 XDrawRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4155 f->output_data.x->cursor_gc, |
286 | 4156 left, top, width - 1, height - 1); |
4157 } | |
4158 | |
771 | 4159 /* Clear the cursor of frame F to background color, |
286 | 4160 and mark the cursor as not shown. |
4161 This is used when the text where the cursor is | |
4162 is about to be rewritten. */ | |
4163 | |
4164 static void | |
771 | 4165 clear_cursor (f) |
4166 struct frame *f; | |
286 | 4167 { |
4168 int mask; | |
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 | 4171 || f->phys_cursor_x < 0) |
286 | 4172 return; |
4173 | |
771 | 4174 x_display_cursor (f, 0); |
4175 f->phys_cursor_x = -1; | |
286 | 4176 } |
4177 | |
771 | 4178 /* Redraw the glyph at ROW, COLUMN on frame F, in the style |
429 | 4179 HIGHLIGHT. HIGHLIGHT is as defined for dumpglyphs. Return the |
4180 glyph drawn. */ | |
286 | 4181 |
4182 static void | |
771 | 4183 x_draw_single_glyph (f, row, column, glyph, highlight) |
4184 struct frame *f; | |
286 | 4185 int row, column; |
429 | 4186 GLYPH glyph; |
286 | 4187 int highlight; |
4188 { | |
771 | 4189 dumpglyphs (f, |
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4190 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
|
4191 CHAR_TO_PIXEL_ROW (f, row), |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
4192 &glyph, 1, highlight, 0); |
286 | 4193 } |
4194 | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4195 static void |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4196 x_display_bar_cursor (f, on, x, y) |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4197 struct frame *f; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4198 int on; |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4199 int x, y; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4200 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4201 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
|
4202 |
2235
80e0d36bbb77
* xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents:
2195
diff
changeset
|
4203 /* 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
|
4204 frames; in the latter case, the frame may be in the midst of |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4205 changing its size, and x and y may be off the frame. */ |
2235
80e0d36bbb77
* xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents:
2195
diff
changeset
|
4206 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
|
4207 return; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4208 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4209 if (! on && f->phys_cursor_x < 0) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4210 return; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4211 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4212 /* 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
|
4213 if (f->phys_cursor_x >= 0 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4214 && (!on |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4215 || f->phys_cursor_x != x |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4216 || f->phys_cursor_y != y |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4217 || f->output_data.x->current_cursor != bar_cursor)) |
1821
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 /* 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
|
4220 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
|
4221 f->phys_cursor_glyph, |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4222 current_glyphs->highlight[f->phys_cursor_y]); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4223 f->phys_cursor_x = -1; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4224 } |
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 /* 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
|
4227 if (on |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4228 && (f->phys_cursor_x < 0 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4229 || (f->output_data.x->current_cursor != bar_cursor))) |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4230 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4231 f->phys_cursor_glyph |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4232 = ((current_glyphs->enable[y] |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4233 && x < current_glyphs->used[y]) |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4234 ? current_glyphs->glyphs[y][x] |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4235 : SPACEGLYPH); |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4236 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4237 f->output_data.x->cursor_gc, |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4238 CHAR_TO_PIXEL_COL (f, x), |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4239 CHAR_TO_PIXEL_ROW (f, y), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4240 max (f->output_data.x->cursor_width, 1), |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4241 f->output_data.x->line_height); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4242 |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4243 f->phys_cursor_x = x; |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4244 f->phys_cursor_y = y; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4245 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4246 f->output_data.x->current_cursor = bar_cursor; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4247 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4248 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4249 if (updating_frame != f) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4250 XFlush (FRAME_X_DISPLAY (f)); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4251 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4252 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4253 |
771 | 4254 /* Turn the displayed cursor of frame F on or off according to ON. |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4255 If ON is nonzero, where to put the cursor is specified by X and Y. */ |
286 | 4256 |
4257 static void | |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4258 x_display_box_cursor (f, on, x, y) |
771 | 4259 struct frame *f; |
286 | 4260 int on; |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4261 int x, y; |
286 | 4262 { |
771 | 4263 struct frame_glyphs *current_glyphs = FRAME_CURRENT_GLYPHS (f); |
4264 | |
2235
80e0d36bbb77
* xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents:
2195
diff
changeset
|
4265 /* 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
|
4266 frames; in the latter case, the frame may be in the midst of |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4267 changing its size, and x and y may be off the frame. */ |
2235
80e0d36bbb77
* xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents:
2195
diff
changeset
|
4268 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
|
4269 return; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4270 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4271 /* 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
|
4272 if (!on && f->phys_cursor_x < 0) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4273 return; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4274 |
286 | 4275 /* If cursor is currently being shown and we don't want it to be |
4276 or it is in the wrong place, | |
4277 or we want a hollow box and it's not so, (pout!) | |
4278 erase it. */ | |
771 | 4279 if (f->phys_cursor_x >= 0 |
286 | 4280 && (!on |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4281 || f->phys_cursor_x != x |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4282 || f->phys_cursor_y != y |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4283 || (f->output_data.x->current_cursor != hollow_box_cursor |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
4284 && (f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame)))) |
286 | 4285 { |
7508
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4286 int mouse_face_here = 0; |
10274
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
4287 struct frame_glyphs *active_glyphs = FRAME_CURRENT_GLYPHS (f); |
7508
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4288 |
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4289 /* If the cursor is in the mouse face area, redisplay that when |
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4290 we clear the cursor. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4291 if (f == FRAME_X_DISPLAY_INFO (f)->mouse_face_mouse_frame |
7508
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4292 && |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4293 (f->phys_cursor_y > FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_row |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4294 || (f->phys_cursor_y == FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_row |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4295 && f->phys_cursor_x >= FRAME_X_DISPLAY_INFO (f)->mouse_face_beg_col)) |
7508
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4296 && |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4297 (f->phys_cursor_y < FRAME_X_DISPLAY_INFO (f)->mouse_face_end_row |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4298 || (f->phys_cursor_y == FRAME_X_DISPLAY_INFO (f)->mouse_face_end_row |
10274
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
4299 && f->phys_cursor_x < FRAME_X_DISPLAY_INFO (f)->mouse_face_end_col)) |
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
4300 /* Don't redraw the cursor's spot in mouse face |
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
4301 if it is at the end of a line (on a newline). |
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
4302 The cursor appears there, but mouse highlighting does not. */ |
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
4303 && active_glyphs->used[f->phys_cursor_y] > f->phys_cursor_x) |
7508
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4304 mouse_face_here = 1; |
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4305 |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
4306 /* If the font is not as tall as a whole line, |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
4307 we must explicitly clear the line's whole height. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4308 if (FONT_HEIGHT (f->output_data.x->font) != f->output_data.x->line_height) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4309 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
4310 CHAR_TO_PIXEL_COL (f, f->phys_cursor_x), |
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
4311 CHAR_TO_PIXEL_ROW (f, f->phys_cursor_y), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4312 FONT_WIDTH (f->output_data.x->font), |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4313 f->output_data.x->line_height, False); |
286 | 4314 /* Erase the cursor by redrawing the character underneath it. */ |
771 | 4315 x_draw_single_glyph (f, f->phys_cursor_y, f->phys_cursor_x, |
4316 f->phys_cursor_glyph, | |
7508
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4317 (mouse_face_here |
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4318 ? 3 |
a15923bc982d
(x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents:
7501
diff
changeset
|
4319 : current_glyphs->highlight[f->phys_cursor_y])); |
771 | 4320 f->phys_cursor_x = -1; |
286 | 4321 } |
4322 | |
4323 /* If we want to show a cursor, | |
4324 or we want a box cursor and it's not so, | |
4325 write it in the right place. */ | |
4326 if (on | |
771 | 4327 && (f->phys_cursor_x < 0 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4328 || (f->output_data.x->current_cursor != filled_box_cursor |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
4329 && f == FRAME_X_DISPLAY_INFO (f)->x_highlight_frame))) |
286 | 4330 { |
771 | 4331 f->phys_cursor_glyph |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4332 = ((current_glyphs->enable[y] |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4333 && x < current_glyphs->used[y]) |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4334 ? current_glyphs->glyphs[y][x] |
429 | 4335 : SPACEGLYPH); |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
4336 if (f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame) |
286 | 4337 { |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4338 x_draw_box (f, x, y); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4339 f->output_data.x->current_cursor = hollow_box_cursor; |
286 | 4340 } |
4341 else | |
4342 { | |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4343 x_draw_single_glyph (f, y, x, |
771 | 4344 f->phys_cursor_glyph, 2); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4345 f->output_data.x->current_cursor = filled_box_cursor; |
286 | 4346 } |
4347 | |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4348 f->phys_cursor_x = x; |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4349 f->phys_cursor_y = y; |
286 | 4350 } |
4351 | |
771 | 4352 if (updating_frame != f) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4353 XFlush (FRAME_X_DISPLAY (f)); |
286 | 4354 } |
4355 | |
12431
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4356 /* Display the cursor on frame F, or clear it, according to ON. |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4357 Use the position specified by curs_x and curs_y |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4358 if we are doing an update of frame F now. |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4359 Otherwise use the position in the FRAME_CURSOR_X and FRAME_CURSOR_Y fields |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4360 of F. */ |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4361 |
771 | 4362 x_display_cursor (f, on) |
4363 struct frame *f; | |
286 | 4364 int on; |
4365 { | |
5872
6389c826f847
(x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents:
5825
diff
changeset
|
4366 BLOCK_INPUT; |
6389c826f847
(x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents:
5825
diff
changeset
|
4367 |
12431
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4368 /* If we're not updating, then don't change the physical cursor |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4369 position. Just change (if appropriate) the style of display. */ |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4370 if (f != updating_frame) |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4371 { |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4372 curs_x = FRAME_CURSOR_X (f); |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4373 curs_y = FRAME_CURSOR_Y (f); |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4374 } |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4375 |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4376 if (FRAME_DESIRED_CURSOR (f) == filled_box_cursor) |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4377 x_display_box_cursor (f, on, curs_x, curs_y); |
12431
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4378 else if (FRAME_DESIRED_CURSOR (f) == bar_cursor) |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4379 x_display_bar_cursor (f, on, curs_x, curs_y); |
12431
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4380 else |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4381 /* Those are the only two we have implemented! */ |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4382 abort (); |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4383 |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4384 UNBLOCK_INPUT; |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4385 } |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4386 |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4387 /* Display the cursor on frame F, or clear it, according to ON. |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4388 Don't change the cursor's position. */ |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4389 |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4390 x_update_cursor (f, on) |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4391 struct frame *f; |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4392 int on; |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4393 { |
14692
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
4394 /* If we don't have any previous cursor position to use, |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
4395 leave the cursor off. */ |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
4396 if (f->phys_cursor_x < 0) |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
4397 return; |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
4398 |
12431
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4399 BLOCK_INPUT; |
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
4400 |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4401 if (FRAME_DESIRED_CURSOR (f) == filled_box_cursor) |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4402 x_display_box_cursor (f, on, f->phys_cursor_x, f->phys_cursor_y); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4403 else if (FRAME_DESIRED_CURSOR (f) == bar_cursor) |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
4404 x_display_bar_cursor (f, on, f->phys_cursor_x, f->phys_cursor_y); |
286 | 4405 else |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4406 /* Those are the only two we have implemented! */ |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4407 abort (); |
5872
6389c826f847
(x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents:
5825
diff
changeset
|
4408 |
6389c826f847
(x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents:
5825
diff
changeset
|
4409 UNBLOCK_INPUT; |
286 | 4410 } |
4411 | |
4412 /* Icons. */ | |
4413 | |
771 | 4414 /* Refresh bitmap kitchen sink icon for frame F |
286 | 4415 when we get an expose event for it. */ |
4416 | |
771 | 4417 refreshicon (f) |
4418 struct frame *f; | |
286 | 4419 { |
4420 /* Normally, the window manager handles this function. */ | |
4421 } | |
4422 | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4423 /* Make the x-window of frame F use the gnu icon bitmap. */ |
286 | 4424 |
4425 int | |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4426 x_bitmap_icon (f, file) |
771 | 4427 struct frame *f; |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4428 Lisp_Object file; |
286 | 4429 { |
9542
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
4430 int mask, bitmap_id; |
286 | 4431 Window icon_window; |
4432 | |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4433 if (FRAME_X_WINDOW (f) == 0) |
286 | 4434 return 1; |
4435 | |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4436 /* Free up our existing icon bitmap if any. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4437 if (f->output_data.x->icon_bitmap > 0) |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4438 x_destroy_bitmap (f, f->output_data.x->icon_bitmap); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4439 f->output_data.x->icon_bitmap = 0; |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4440 |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4441 if (STRINGP (file)) |
9542
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
4442 bitmap_id = x_create_bitmap_from_file (f, file); |
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
4443 else |
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
4444 { |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4445 /* Create the GNU bitmap if necessary. */ |
10755
e5f13cc95d02
(x_bitmap_icon): Fix test for unallocated icon bitmap.
Paul Reilly <pmr@pajato.com>
parents:
10743
diff
changeset
|
4446 if (FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id < 0) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4447 FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4448 = x_create_bitmap_from_data (f, gnu_bits, |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4449 gnu_width, gnu_height); |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4450 |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4451 /* The first time we create the GNU bitmap, |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4452 this increments the refcount one extra time. |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4453 As a result, the GNU bitmap is never freed. |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
4454 That way, we don't have to worry about allocating it again. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4455 x_reference_bitmap (f, FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4456 |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4457 bitmap_id = FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id; |
9542
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
4458 } |
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
4459 |
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
4460 x_wm_set_icon_pixmap (f, bitmap_id); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4461 f->output_data.x->icon_bitmap = bitmap_id; |
286 | 4462 |
4463 return 0; | |
4464 } | |
4465 | |
4466 | |
12074
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4467 /* Make the x-window of frame F use a rectangle with text. |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4468 Use ICON_NAME as the text. */ |
286 | 4469 |
4470 int | |
771 | 4471 x_text_icon (f, icon_name) |
4472 struct frame *f; | |
286 | 4473 char *icon_name; |
4474 { | |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4475 if (FRAME_X_WINDOW (f) == 0) |
286 | 4476 return 1; |
4477 | |
12074
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4478 #ifdef HAVE_X11R4 |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4479 { |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4480 XTextProperty text; |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4481 text.value = (unsigned char *) icon_name; |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4482 text.encoding = XA_STRING; |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4483 text.format = 8; |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4484 text.nitems = strlen (icon_name); |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4485 #ifdef USE_X_TOOLKIT |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4486 XSetWMIconName (FRAME_X_DISPLAY (f), XtWindow (f->output_data.x->widget), |
12074
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4487 &text); |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4488 #else /* not USE_X_TOOLKIT */ |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4489 XSetWMIconName (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), &text); |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4490 #endif /* not USE_X_TOOLKIT */ |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4491 } |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4492 #else /* not HAVE_X11R4 */ |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4493 XSetIconName (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), icon_name); |
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
4494 #endif /* not HAVE_X11R4 */ |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
4495 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4496 if (f->output_data.x->icon_bitmap > 0) |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4497 x_destroy_bitmap (f, f->output_data.x->icon_bitmap); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4498 f->output_data.x->icon_bitmap = 0; |
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
4499 x_wm_set_icon_pixmap (f, 0); |
286 | 4500 |
4501 return 0; | |
4502 } | |
4503 | |
621 | 4504 /* Handling X errors. */ |
4505 | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4506 /* Handle the loss of connection to display DISPLAY. */ |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
4507 |
621 | 4508 static SIGTYPE |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4509 x_connection_closed (display, error_message) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4510 Display *display; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4511 char *error_message; |
621 | 4512 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4513 struct x_display_info *dpyinfo = x_display_info_for_display (display); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4514 Lisp_Object frame, tail; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4515 |
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
4516 /* Indicate that this display is dead. */ |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
4517 |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
4518 dpyinfo->display = 0; |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
4519 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4520 /* First delete frames whose minibuffers are on frames |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4521 that are on the dead display. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4522 FOR_EACH_FRAME (tail, frame) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4523 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4524 Lisp_Object minibuf_frame; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4525 minibuf_frame |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4526 = WINDOW_FRAME (XWINDOW (FRAME_MINIBUF_WINDOW (XFRAME (frame)))); |
10921
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
4527 if (FRAME_X_P (XFRAME (frame)) |
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
4528 && FRAME_X_P (XFRAME (minibuf_frame)) |
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
4529 && ! EQ (frame, minibuf_frame) |
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
4530 && FRAME_X_DISPLAY_INFO (XFRAME (minibuf_frame)) == dpyinfo) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4531 Fdelete_frame (frame, Qt); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4532 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4533 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4534 /* Now delete all remaining frames on the dead display. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4535 We are now sure none of these is used as the minibuffer |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4536 for another frame that we need to delete. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4537 FOR_EACH_FRAME (tail, frame) |
10921
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
4538 if (FRAME_X_P (XFRAME (frame)) |
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
4539 && FRAME_X_DISPLAY_INFO (XFRAME (frame)) == dpyinfo) |
11904
0d37c1e81c0d
(x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents:
11901
diff
changeset
|
4540 { |
0d37c1e81c0d
(x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents:
11901
diff
changeset
|
4541 /* Set this to t so that Fdelete_frame won't get confused |
0d37c1e81c0d
(x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents:
11901
diff
changeset
|
4542 trying to find a replacement. */ |
0d37c1e81c0d
(x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents:
11901
diff
changeset
|
4543 FRAME_KBOARD (XFRAME (frame))->Vdefault_minibuffer_frame = Qt; |
0d37c1e81c0d
(x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents:
11901
diff
changeset
|
4544 Fdelete_frame (frame, Qt); |
0d37c1e81c0d
(x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents:
11901
diff
changeset
|
4545 } |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4546 |
13727
9eb09adbcb38
(x_connection_closed): Don't delete dpyinfo if it's null.
Karl Heuer <kwzh@gnu.org>
parents:
13633
diff
changeset
|
4547 if (dpyinfo) |
9eb09adbcb38
(x_connection_closed): Don't delete dpyinfo if it's null.
Karl Heuer <kwzh@gnu.org>
parents:
13633
diff
changeset
|
4548 x_delete_display (dpyinfo); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4549 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4550 if (x_display_list == 0) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4551 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4552 fprintf (stderr, "%s", error_message); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4553 shut_down_emacs (0, 0, Qnil); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4554 exit (70); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4555 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4556 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4557 /* Ordinary stack unwind doesn't deal with these. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4558 #ifdef SIGIO |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4559 sigunblock (sigmask (SIGIO)); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4560 #endif |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4561 sigunblock (sigmask (SIGALRM)); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4562 TOTALLY_UNBLOCK_INPUT; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4563 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4564 error ("%s", error_message); |
621 | 4565 } |
4566 | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4567 /* This is the usual handler for X protocol errors. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4568 It kills all frames on the display that we got the error for. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4569 If that was the only one, it prints an error message and kills Emacs. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4570 |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4571 static int |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4572 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
|
4573 Display *display; |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4574 XErrorEvent *error; |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4575 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4576 char buf[256], buf1[356]; |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4577 |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
4578 /* Note that there is no real way portable across R3/R4 to get the |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4579 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
|
4580 |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4581 XGetErrorText (display, error->error_code, buf, sizeof (buf)); |
14557
64e5e68aef13
(x_error_quitter): Add newline to error message.
Richard M. Stallman <rms@gnu.org>
parents:
14522
diff
changeset
|
4582 sprintf (buf1, "X protocol error: %s on protocol request %d\n", |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4583 buf, error->request_code); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4584 x_connection_closed (display, buf1); |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4585 } |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4586 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4587 /* This is the handler for X IO errors, always. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4588 It kills all frames on the display that we lost touch with. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4589 If that was the only one, it prints an error message and kills Emacs. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4590 |
1875
f569bc4e9b8f
* xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents:
1841
diff
changeset
|
4591 static int |
f569bc4e9b8f
* xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents:
1841
diff
changeset
|
4592 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
|
4593 Display *display; |
f569bc4e9b8f
* xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents:
1841
diff
changeset
|
4594 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4595 char buf[256]; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4596 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4597 sprintf (buf, "Connection lost to X server `%s'", DisplayString (display)); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4598 x_connection_closed (display, buf); |
1875
f569bc4e9b8f
* xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents:
1841
diff
changeset
|
4599 } |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4600 |
13205
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4601 /* Handle SIGPIPE, which can happen when the connection to a server |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4602 simply goes away. SIGPIPE is handled by x_connection_signal. |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4603 It works by sending a no-op command to each X server connection. |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4604 When we try a connection that has closed, we get SIGPIPE again. |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4605 But this time, it is handled by x_connection_signal_1. |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4606 That function knows which connection we were testing, |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4607 so it closes that one. |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4608 |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4609 x_connection_closed never returns, |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4610 so if more than one connection was lost at once, |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4611 we only find one. But XTread_socket keeps trying them all, |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4612 so it will notice the other closed one sooner or later. */ |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4613 |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4614 |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4615 static struct x_display_info *x_connection_signal_dpyinfo; |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4616 |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4617 static SIGTYPE x_connection_signal (); |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4618 |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4619 static SIGTYPE |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4620 x_connection_signal_1 (signalnum) /* If we don't have an argument, */ |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4621 int signalnum; /* some compilers complain in signal calls. */ |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4622 { |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4623 signal (SIGPIPE, x_connection_signal); |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4624 x_connection_closed (x_connection_signal_dpyinfo, |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4625 "connection was lost"); |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4626 } |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4627 |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4628 static SIGTYPE |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4629 x_connection_signal (signalnum) /* If we don't have an argument, */ |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4630 int signalnum; /* some compilers complain in signal calls. */ |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4631 { |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4632 x_connection_signal_dpyinfo = x_display_list; |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4633 |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4634 sigunblock (SIGPIPE); |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4635 |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4636 while (x_connection_signal_dpyinfo) |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4637 { |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4638 signal (SIGPIPE, x_connection_signal_1); |
13782
52f469edf216
(x_connection_signal): Set an alarm around XNoOp call.
Karl Heuer <kwzh@gnu.org>
parents:
13727
diff
changeset
|
4639 |
14694
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
4640 x_connection_close_if_hung (x_connection_signal_dpyinfo); |
14305
3cc44eaf9ebf
(x_connection_signal): Explicitly check the thread interlock
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
4641 |
13205
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4642 XNoOp (x_connection_signal_dpyinfo->display); |
13782
52f469edf216
(x_connection_signal): Set an alarm around XNoOp call.
Karl Heuer <kwzh@gnu.org>
parents:
13727
diff
changeset
|
4643 |
13205
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4644 XSync (x_connection_signal_dpyinfo->display, False); |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4645 |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4646 /* Each time we get here, cycle through the displays now open. */ |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4647 x_connection_signal_dpyinfo = x_connection_signal_dpyinfo->next; |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4648 } |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4649 |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4650 /* We should have found some closed connection. */ |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4651 abort (); |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4652 } |
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
4653 |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4654 /* 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
|
4655 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
|
4656 #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
|
4657 |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4658 /* 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
|
4659 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
|
4660 x_catch_errors is in effect. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4661 |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4662 static int |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4663 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
|
4664 Display *display; |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4665 XErrorEvent *error; |
286 | 4666 { |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4667 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
|
4668 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
|
4669 } |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4670 |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4671 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4672 /* Begin trapping X errors for display DPY. Actually we trap X errors |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4673 for all displays, but DPY should be the display you are actually |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4674 operating on. |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4675 |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4676 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
|
4677 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
|
4678 |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4679 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
|
4680 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
|
4681 |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4682 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
|
4683 |
5825
b1f35db748d8
(x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5753
diff
changeset
|
4684 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
|
4685 |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4686 void |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4687 x_catch_errors (dpy) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4688 Display *dpy; |
286 | 4689 { |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4690 /* Make sure any errors from previous requests have been dealt with. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4691 XSync (dpy, False); |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4692 |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4693 /* 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
|
4694 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
|
4695 = (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
|
4696 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
|
4697 |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4698 /* Install our little error handler. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4699 XSetErrorHandler (x_error_catcher); |
286 | 4700 } |
4701 | |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4702 /* 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
|
4703 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
|
4704 sprintf (a buffer, FORMAT, the x error message text) as the text. */ |
5986 | 4705 |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4706 void |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4707 x_check_errors (dpy, format) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4708 Display *dpy; |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4709 char *format; |
286 | 4710 { |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4711 /* Make sure to catch any errors incurred so far. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4712 XSync (dpy, False); |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4713 |
3558
f7f187debe2d
(x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents:
3511
diff
changeset
|
4714 if (x_caught_error_message[0]) |
286 | 4715 { |
3558
f7f187debe2d
(x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents:
3511
diff
changeset
|
4716 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
|
4717 |
f7f187debe2d
(x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents:
3511
diff
changeset
|
4718 sprintf (buf, format, x_caught_error_message); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4719 x_uncatch_errors (dpy); |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4720 error (buf); |
286 | 4721 } |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4722 } |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4723 |
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
4724 /* 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
|
4725 |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
4726 int |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4727 x_had_errors_p (dpy) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4728 Display *dpy; |
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
4729 { |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
4730 /* Make sure to catch any errors incurred so far. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4731 XSync (dpy, False); |
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
4732 |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
4733 return x_caught_error_message[0] != 0; |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
4734 } |
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
4735 |
5986 | 4736 /* Stop catching X protocol errors and let them make Emacs die. */ |
4737 | |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4738 void |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4739 x_uncatch_errors (dpy) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4740 Display *dpy; |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4741 { |
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2353
diff
changeset
|
4742 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
|
4743 x_caught_error_message = 0; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4744 XSetErrorHandler (x_error_quitter); |
286 | 4745 } |
4746 | |
4747 #if 0 | |
4748 static unsigned int x_wire_count; | |
4749 x_trace_wire () | |
4750 { | |
4751 fprintf (stderr, "Lib call: %d\n", ++x_wire_count); | |
4752 } | |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
4753 #endif /* ! 0 */ |
286 | 4754 |
4755 | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4756 /* 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
|
4757 |
8291
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4758 /* Give frame F the font named FONTNAME as its default font, and |
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4759 return the full name of that font. FONTNAME may be a wildcard |
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4760 pattern; in that case, we choose some font that fits the pattern. |
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4761 The return value shows which font we chose. */ |
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4762 |
3076
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
4763 Lisp_Object |
771 | 4764 x_new_font (f, fontname) |
4765 struct frame *f; | |
286 | 4766 register char *fontname; |
4767 { | |
4768 int already_loaded; | |
4769 int n_matching_fonts; | |
4770 XFontStruct *font_info; | |
4771 char **font_names; | |
4772 | |
4773 /* Get a list of all the fonts that match this name. Once we | |
4774 have a list of matching fonts, we compare them against the fonts | |
4775 we already have by comparing font ids. */ | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4776 font_names = (char **) XListFonts (FRAME_X_DISPLAY (f), fontname, |
4493
d0143beb12f0
(struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents:
4476
diff
changeset
|
4777 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
|
4778 /* 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
|
4779 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
|
4780 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
|
4781 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
|
4782 |
3511
21fae09a3ad2
(x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents:
3465
diff
changeset
|
4783 /* 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
|
4784 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
|
4785 fail to find a font, but XLoadQueryFont may still find it. */ |
286 | 4786 |
429 | 4787 /* 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
|
4788 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
|
4789 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
|
4790 { |
21fae09a3ad2
(x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents:
3465
diff
changeset
|
4791 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
|
4792 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4793 for (i = 0; i < FRAME_X_DISPLAY_INFO (f)->n_fonts; i++) |
3511
21fae09a3ad2
(x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents:
3465
diff
changeset
|
4794 for (j = 0; j < n_matching_fonts; j++) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4795 if (!strcmp (FRAME_X_DISPLAY_INFO (f)->font_table[i].name, font_names[j]) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4796 || !strcmp (FRAME_X_DISPLAY_INFO (f)->font_table[i].full_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
|
4797 { |
21fae09a3ad2
(x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents:
3465
diff
changeset
|
4798 already_loaded = i; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4799 fontname = FRAME_X_DISPLAY_INFO (f)->font_table[i].full_name; |
3511
21fae09a3ad2
(x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents:
3465
diff
changeset
|
4800 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
|
4801 } |
21fae09a3ad2
(x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents:
3465
diff
changeset
|
4802 } |
286 | 4803 found_font: |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
4804 |
286 | 4805 /* 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
|
4806 if (already_loaded >= 0) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4807 f->output_data.x->font = FRAME_X_DISPLAY_INFO (f)->font_table[already_loaded].font; |
286 | 4808 /* Otherwise, load the font and add it to the table. */ |
4809 else | |
4810 { | |
3016
ce9ea90b5848
* xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents:
2982
diff
changeset
|
4811 int i; |
8291
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4812 char *full_name; |
286 | 4813 XFontStruct *font; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4814 int n_fonts; |
286 | 4815 |
3016
ce9ea90b5848
* xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents:
2982
diff
changeset
|
4816 /* Try to find a character-cell font in the list. */ |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
4817 #if 0 |
3066
039cbddadc51
* xfaces.c (merge_faces): You can't tell if a font is a
Jim Blandy <jimb@redhat.com>
parents:
3045
diff
changeset
|
4818 /* 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
|
4819 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
|
4820 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
|
4821 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
|
4822 #else |
039cbddadc51
* xfaces.c (merge_faces): You can't tell if a font is a
Jim Blandy <jimb@redhat.com>
parents:
3045
diff
changeset
|
4823 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
|
4824 #endif |
3016
ce9ea90b5848
* xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents:
2982
diff
changeset
|
4825 |
3511
21fae09a3ad2
(x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents:
3465
diff
changeset
|
4826 /* 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
|
4827 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
|
4828 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
|
4829 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4830 font = (XFontStruct *) XLoadQueryFont (FRAME_X_DISPLAY (f), fontname); |
286 | 4831 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
|
4832 { |
4493
d0143beb12f0
(struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents:
4476
diff
changeset
|
4833 /* 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
|
4834 if (n_matching_fonts) |
4493
d0143beb12f0
(struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents:
4476
diff
changeset
|
4835 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
|
4836 return Qnil; |
21fae09a3ad2
(x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents:
3465
diff
changeset
|
4837 } |
286 | 4838 |
4839 /* Do we need to create the table? */ | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4840 if (FRAME_X_DISPLAY_INFO (f)->font_table_size == 0) |
286 | 4841 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4842 FRAME_X_DISPLAY_INFO (f)->font_table_size = 16; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4843 FRAME_X_DISPLAY_INFO (f)->font_table |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4844 = (struct font_info *) xmalloc (FRAME_X_DISPLAY_INFO (f)->font_table_size |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4845 * sizeof (struct font_info)); |
286 | 4846 } |
4847 /* Do we need to grow the table? */ | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4848 else if (FRAME_X_DISPLAY_INFO (f)->n_fonts |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4849 >= FRAME_X_DISPLAY_INFO (f)->font_table_size) |
286 | 4850 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4851 FRAME_X_DISPLAY_INFO (f)->font_table_size *= 2; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4852 FRAME_X_DISPLAY_INFO (f)->font_table |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4853 = (struct font_info *) xrealloc (FRAME_X_DISPLAY_INFO (f)->font_table, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4854 (FRAME_X_DISPLAY_INFO (f)->font_table_size |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4855 * sizeof (struct font_info))); |
286 | 4856 } |
4857 | |
8291
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4858 /* Try to get the full name of FONT. Put it in full_name. */ |
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4859 full_name = 0; |
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4860 for (i = 0; i < font->n_properties; i++) |
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4861 { |
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4862 char *atom |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4863 = XGetAtomName (FRAME_X_DISPLAY (f), font->properties[i].name); |
8291
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4864 if (!strcmp (atom, "FONT")) |
8964
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4865 { |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4866 char *name = XGetAtomName (FRAME_X_DISPLAY (f), |
8964
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4867 (Atom) (font->properties[i].card32)); |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4868 char *p = name; |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4869 int dashes = 0; |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4870 |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4871 /* Count the number of dashes in the "full name". |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4872 If it is too few, this isn't really the font's full name, |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4873 so don't use it. |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4874 In X11R4, the fonts did not come with their canonical names |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4875 stored in them. */ |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4876 while (*p) |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4877 { |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4878 if (*p == '-') |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4879 dashes++; |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4880 p++; |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4881 } |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4882 |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4883 if (dashes >= 13) |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4884 full_name = name; |
9526
c84536ef5fa9
(x_new_font): Don't keep looping after the FONT property.
Richard M. Stallman <rms@gnu.org>
parents:
9446
diff
changeset
|
4885 |
c84536ef5fa9
(x_new_font): Don't keep looping after the FONT property.
Richard M. Stallman <rms@gnu.org>
parents:
9446
diff
changeset
|
4886 break; |
8964
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4887 } |
5882c2fedd98
(note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
8941
diff
changeset
|
4888 |
8291
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4889 XFree (atom); |
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4890 } |
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4891 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4892 n_fonts = FRAME_X_DISPLAY_INFO (f)->n_fonts; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4893 FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].name = (char *) xmalloc (strlen (fontname) + 1); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4894 bcopy (fontname, FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].name, strlen (fontname) + 1); |
8291
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4895 if (full_name != 0) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4896 FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].full_name = full_name; |
8291
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4897 else |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4898 FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].full_name = FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].name; |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4899 f->output_data.x->font = FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].font = font; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4900 FRAME_X_DISPLAY_INFO (f)->n_fonts++; |
8291
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
4901 |
8528
e52f4cbff616
(x_new_font): Don't set filename = full_name if that's null.
Richard M. Stallman <rms@gnu.org>
parents:
8485
diff
changeset
|
4902 if (full_name) |
e52f4cbff616
(x_new_font): Don't set filename = full_name if that's null.
Richard M. Stallman <rms@gnu.org>
parents:
8485
diff
changeset
|
4903 fontname = full_name; |
286 | 4904 } |
4493
d0143beb12f0
(struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents:
4476
diff
changeset
|
4905 |
9167
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
4906 /* Compute the scroll bar width in character columns. */ |
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
4907 if (f->scroll_bar_pixel_width > 0) |
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
4908 { |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4909 int wid = FONT_WIDTH (f->output_data.x->font); |
9167
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
4910 f->scroll_bar_cols = (f->scroll_bar_pixel_width + wid-1) / wid; |
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
4911 } |
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
4912 else |
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
4913 f->scroll_bar_cols = 2; |
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
4914 |
771 | 4915 /* 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
|
4916 if (FRAME_X_WINDOW (f) != 0) |
286 | 4917 { |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4918 XSetFont (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc, |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4919 f->output_data.x->font->fid); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4920 XSetFont (FRAME_X_DISPLAY (f), f->output_data.x->reverse_gc, |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4921 f->output_data.x->font->fid); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4922 XSetFont (FRAME_X_DISPLAY (f), f->output_data.x->cursor_gc, |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4923 f->output_data.x->font->fid); |
771 | 4924 |
6767
8fbcee1c2059
(stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents:
6757
diff
changeset
|
4925 frame_update_line_height (f); |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
4926 x_set_window_size (f, 0, f->width, f->height); |
286 | 4927 } |
6767
8fbcee1c2059
(stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents:
6757
diff
changeset
|
4928 else |
8fbcee1c2059
(stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents:
6757
diff
changeset
|
4929 /* If we are setting a new frame's font for the first time, |
8fbcee1c2059
(stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents:
6757
diff
changeset
|
4930 there are no faces yet, so this font's height is the line height. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4931 f->output_data.x->line_height = FONT_HEIGHT (f->output_data.x->font); |
286 | 4932 |
3076
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
4933 { |
6521
a975c5944916
(x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6413
diff
changeset
|
4934 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
|
4935 |
a975c5944916
(x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6413
diff
changeset
|
4936 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
|
4937 |
4493
d0143beb12f0
(struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents:
4476
diff
changeset
|
4938 /* 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
|
4939 we actually retain comes from XLoadQueryFont. */ |
4493
d0143beb12f0
(struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents:
4476
diff
changeset
|
4940 XFreeFontNames (font_names); |
3076
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
4941 |
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
4942 return lispy_name; |
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
4943 } |
286 | 4944 } |
4945 | |
14826
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
4946 /* Calculate the absolute position in frame F |
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
4947 from its current recorded position values and gravity. */ |
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
4948 |
7264
a701bffa0f9d
(x_calc_absolute_position): Use size_hint_flags.
Richard M. Stallman <rms@gnu.org>
parents:
7262
diff
changeset
|
4949 x_calc_absolute_position (f) |
771 | 4950 struct frame *f; |
286 | 4951 { |
4630
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4952 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
|
4953 int win_x = 0, win_y = 0; |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4954 int flags = f->output_data.x->size_hint_flags; |
11896
507a45c7e911
(x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents:
11807
diff
changeset
|
4955 int this_window; |
507a45c7e911
(x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents:
11807
diff
changeset
|
4956 |
507a45c7e911
(x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents:
11807
diff
changeset
|
4957 #ifdef USE_X_TOOLKIT |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4958 this_window = XtWindow (f->output_data.x->widget); |
11896
507a45c7e911
(x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents:
11807
diff
changeset
|
4959 #else |
507a45c7e911
(x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents:
11807
diff
changeset
|
4960 this_window = FRAME_X_WINDOW (f); |
507a45c7e911
(x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents:
11807
diff
changeset
|
4961 #endif |
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 |
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4963 /* 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
|
4964 the inner window, with respect to the outer window. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4965 if (f->output_data.x->parent_desc != FRAME_X_DISPLAY_INFO (f)->root_window) |
4630
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4966 { |
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4967 BLOCK_INPUT; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4968 XTranslateCoordinates (FRAME_X_DISPLAY (f), |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
4969 |
4630
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4970 /* From-window, to-window. */ |
11896
507a45c7e911
(x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents:
11807
diff
changeset
|
4971 this_window, |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4972 f->output_data.x->parent_desc, |
4630
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4973 |
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4974 /* 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
|
4975 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
|
4976 |
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4977 /* 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
|
4978 &child); |
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4979 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
|
4980 } |
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4981 |
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
4982 /* 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
|
4983 position that fits on the screen. */ |
7262
68fc80bf10df
(x_wm_set_size_hint): Don't try to handle negative positions.
Richard M. Stallman <rms@gnu.org>
parents:
7210
diff
changeset
|
4984 if (flags & XNegative) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4985 f->output_data.x->left_pos = (FRAME_X_DISPLAY_INFO (f)->width |
14826
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
4986 - 2 * f->output_data.x->border_width - win_x |
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
4987 - PIXEL_WIDTH (f) |
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
4988 + f->output_data.x->left_pos); |
771 | 4989 |
7262
68fc80bf10df
(x_wm_set_size_hint): Don't try to handle negative positions.
Richard M. Stallman <rms@gnu.org>
parents:
7210
diff
changeset
|
4990 if (flags & YNegative) |
14801
8bf3083f6499
(x_calc_absolute_position): Don't explicitly subtract
Richard M. Stallman <rms@gnu.org>
parents:
14772
diff
changeset
|
4991 /* We used to subtract f->output_data.x->menubar_height here |
8bf3083f6499
(x_calc_absolute_position): Don't explicitly subtract
Richard M. Stallman <rms@gnu.org>
parents:
14772
diff
changeset
|
4992 in the toolkit case, but PIXEL_HEIGHT already includes that. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
4993 f->output_data.x->top_pos = (FRAME_X_DISPLAY_INFO (f)->height |
14826
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
4994 - 2 * f->output_data.x->border_width - win_y |
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
4995 - PIXEL_HEIGHT (f) |
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
4996 + f->output_data.x->top_pos); |
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
4997 |
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
4998 /* The left_pos and top_pos |
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
4999 are now relative to the top and left screen edges, |
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
5000 so the flags should correspond. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5001 f->output_data.x->size_hint_flags &= ~ (XNegative | YNegative); |
286 | 5002 } |
5003 | |
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
5004 /* CHANGE_GRAVITY is 1 when calling from Fset_frame_position, |
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
5005 to really change the position, and 0 when calling from |
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
5006 x_make_frame_visible (in that case, XOFF and YOFF are the current |
11988
a1ce6f699967
(x_set_offset): Distinguish CHANGE_GRAVITY < 0 case.
Karl Heuer <kwzh@gnu.org>
parents:
11953
diff
changeset
|
5007 position values). It is -1 when calling from x_set_frame_parameters, |
a1ce6f699967
(x_set_offset): Distinguish CHANGE_GRAVITY < 0 case.
Karl Heuer <kwzh@gnu.org>
parents:
11953
diff
changeset
|
5008 which means, do adjust for borders but don't change the gravity. */ |
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
5009 |
6934
e0ab4f59004e
(dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents:
6883
diff
changeset
|
5010 x_set_offset (f, xoff, yoff, change_gravity) |
771 | 5011 struct frame *f; |
286 | 5012 register int xoff, yoff; |
6934
e0ab4f59004e
(dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents:
6883
diff
changeset
|
5013 int change_gravity; |
286 | 5014 { |
11901
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
5015 int modified_top, modified_left; |
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
5016 |
11988
a1ce6f699967
(x_set_offset): Distinguish CHANGE_GRAVITY < 0 case.
Karl Heuer <kwzh@gnu.org>
parents:
11953
diff
changeset
|
5017 if (change_gravity > 0) |
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
5018 { |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5019 f->output_data.x->top_pos = yoff; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5020 f->output_data.x->left_pos = xoff; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5021 f->output_data.x->size_hint_flags &= ~ (XNegative | YNegative); |
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
5022 if (xoff < 0) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5023 f->output_data.x->size_hint_flags |= XNegative; |
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
5024 if (yoff < 0) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5025 f->output_data.x->size_hint_flags |= YNegative; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5026 f->output_data.x->win_gravity = NorthWestGravity; |
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
5027 } |
7264
a701bffa0f9d
(x_calc_absolute_position): Use size_hint_flags.
Richard M. Stallman <rms@gnu.org>
parents:
7262
diff
changeset
|
5028 x_calc_absolute_position (f); |
286 | 5029 |
5030 BLOCK_INPUT; | |
11915
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
5031 x_wm_set_size_hint (f, (long) 0, 0); |
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
5032 |
11901
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
5033 /* It is a mystery why we need to add the border_width here |
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
5034 when the frame is already visible, but experiment says we do. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5035 modified_left = f->output_data.x->left_pos; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5036 modified_top = f->output_data.x->top_pos; |
11988
a1ce6f699967
(x_set_offset): Distinguish CHANGE_GRAVITY < 0 case.
Karl Heuer <kwzh@gnu.org>
parents:
11953
diff
changeset
|
5037 if (change_gravity != 0) |
11901
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
5038 { |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5039 modified_left += f->output_data.x->border_width; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5040 modified_top += f->output_data.x->border_width; |
11901
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
5041 } |
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
5042 |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5043 #ifdef USE_X_TOOLKIT |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5044 XMoveWindow (FRAME_X_DISPLAY (f), XtWindow (f->output_data.x->widget), |
11901
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
5045 modified_left, modified_top); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5046 #else /* not USE_X_TOOLKIT */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5047 XMoveWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
11901
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
5048 modified_left, modified_top); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5049 #endif /* not USE_X_TOOLKIT */ |
286 | 5050 UNBLOCK_INPUT; |
5051 } | |
5052 | |
5825
b1f35db748d8
(x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5753
diff
changeset
|
5053 /* 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
|
5054 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
|
5055 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
|
5056 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
|
5057 |
b1f35db748d8
(x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5753
diff
changeset
|
5058 x_set_window_size (f, change_gravity, cols, rows) |
771 | 5059 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
|
5060 int change_gravity; |
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
5061 int cols, rows; |
286 | 5062 { |
5063 int pixelwidth, pixelheight; | |
5064 int mask; | |
14692
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5065 Lisp_Object window; |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5066 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5067 |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5068 BLOCK_INPUT; |
286 | 5069 |
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
|
5070 #ifdef USE_X_TOOLKIT |
7415
fbea5637a4b4
(x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
7409
diff
changeset
|
5071 { |
fbea5637a4b4
(x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
7409
diff
changeset
|
5072 /* The x and y position of the widget is clobbered by the |
fbea5637a4b4
(x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
7409
diff
changeset
|
5073 call to XtSetValues within EmacsFrameSetCharSize. |
fbea5637a4b4
(x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
7409
diff
changeset
|
5074 This is a real kludge, but I don't understand Xt so I can't |
fbea5637a4b4
(x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
7409
diff
changeset
|
5075 figure out a correct fix. Can anyone else tell me? -- rms. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5076 int xpos = f->output_data.x->widget->core.x; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5077 int ypos = f->output_data.x->widget->core.y; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5078 EmacsFrameSetCharSize (f->output_data.x->edit_widget, cols, rows); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5079 f->output_data.x->widget->core.x = xpos; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5080 f->output_data.x->widget->core.y = ypos; |
7415
fbea5637a4b4
(x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents:
7409
diff
changeset
|
5081 } |
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
|
5082 |
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
|
5083 #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
|
5084 |
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
5085 check_frame_size (f, &rows, &cols); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5086 f->output_data.x->vertical_scroll_bar_extra |
9167
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
5087 = (!FRAME_HAS_VERTICAL_SCROLL_BARS (f) |
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
5088 ? 0 |
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
5089 : FRAME_SCROLL_BAR_PIXEL_WIDTH (f) > 0 |
8941
71762e6d69e0
* xterm.c (x_new_font): Compute number of scrollbar columns.
Karl Heuer <kwzh@gnu.org>
parents:
8848
diff
changeset
|
5090 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5091 : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->output_data.x->font))); |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5092 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
|
5093 pixelheight = CHAR_TO_PIXEL_HEIGHT (f, rows); |
286 | 5094 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5095 f->output_data.x->win_gravity = NorthWestGravity; |
11915
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
5096 x_wm_set_size_hint (f, (long) 0, 0); |
8781
98741404d3e0
Delete X11 conditionals.
Richard M. Stallman <rms@gnu.org>
parents:
8724
diff
changeset
|
5097 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5098 XSync (FRAME_X_DISPLAY (f), False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5099 XResizeWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5100 pixelwidth, pixelheight); |
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
5101 |
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
5102 /* 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
|
5103 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
|
5104 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
|
5105 ConfigureNotify event gets here. |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5106 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5107 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
|
5108 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
|
5109 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
|
5110 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
|
5111 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
|
5112 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
|
5113 PIXEL_WIDTH (f) = pixelwidth; |
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
5114 PIXEL_HEIGHT (f) = pixelheight; |
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
5115 |
14692
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5116 /* We've set {FRAME,PIXEL}_{WIDTH,HEIGHT} to the values we hope to |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5117 receive in the ConfigureNotify event; if we get what we asked |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5118 for, then the event won't cause the screen to become garbaged, so |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5119 we have to make sure to do it here. */ |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5120 SET_FRAME_GARBAGED (f); |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5121 |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5122 XFlush (FRAME_X_DISPLAY (f)); |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5123 |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5124 #endif /* not USE_X_TOOLKIT */ |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5125 |
7651
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
5126 /* If cursor was outside the new size, mark it as off. */ |
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
5127 if (f->phys_cursor_y >= rows |
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
5128 || f->phys_cursor_x >= cols) |
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
5129 { |
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
5130 f->phys_cursor_x = -1; |
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
5131 f->phys_cursor_y = -1; |
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
5132 } |
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
5133 |
14692
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5134 /* Clear out any recollection of where the mouse highlighting was, |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5135 since it might be in a place that's outside the new frame size. |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5136 Actually checking whether it is outside is a pain in the neck, |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5137 so don't try--just let the highlighting be done afresh with new size. */ |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5138 window = dpyinfo->mouse_face_window; |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5139 if (! NILP (window) && XFRAME (window) == f) |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5140 { |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5141 dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1; |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5142 dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1; |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5143 dpyinfo->mouse_face_window = Qnil; |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5144 } |
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
5145 |
286 | 5146 UNBLOCK_INPUT; |
5147 } | |
5148 | |
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
5149 /* Mouse warping. */ |
286 | 5150 |
7026
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5151 void |
771 | 5152 x_set_mouse_position (f, x, y) |
5153 struct frame *f; | |
286 | 5154 int x, y; |
5155 { | |
5156 int pix_x, pix_y; | |
5157 | |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5158 pix_x = CHAR_TO_PIXEL_COL (f, x) + FONT_WIDTH (f->output_data.x->font) / 2; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5159 pix_y = CHAR_TO_PIXEL_ROW (f, y) + f->output_data.x->line_height / 2; |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5160 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5161 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
|
5162 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
|
5163 |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5164 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
|
5165 if (pix_y > PIXEL_HEIGHT (f)) pix_y = PIXEL_HEIGHT (f); |
286 | 5166 |
5167 BLOCK_INPUT; | |
5168 | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5169 XWarpPointer (FRAME_X_DISPLAY (f), None, FRAME_X_WINDOW (f), |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5170 0, 0, 0, 0, pix_x, pix_y); |
286 | 5171 UNBLOCK_INPUT; |
5172 } | |
5173 | |
7026
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5174 /* Move the mouse to position pixel PIX_X, PIX_Y relative to frame F. */ |
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5175 |
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5176 void |
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5177 x_set_mouse_pixel_position (f, pix_x, pix_y) |
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5178 struct frame *f; |
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5179 int pix_x, pix_y; |
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5180 { |
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5181 BLOCK_INPUT; |
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5182 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5183 XWarpPointer (FRAME_X_DISPLAY (f), None, FRAME_X_WINDOW (f), |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5184 0, 0, 0, 0, pix_x, pix_y); |
7026
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5185 UNBLOCK_INPUT; |
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5186 } |
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
5187 |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
5188 /* focus shifting, raising and lowering. */ |
7026
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
5189 |
771 | 5190 x_focus_on_frame (f) |
5191 struct frame *f; | |
286 | 5192 { |
5156
fd78458b8c43
(XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents:
5018
diff
changeset
|
5193 #if 0 /* This proves to be unpleasant. */ |
771 | 5194 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
|
5195 #endif |
369 | 5196 #if 0 |
5197 /* I don't think that the ICCCM allows programs to do things like this | |
5198 without the interaction of the window manager. Whatever you end up | |
771 | 5199 doing with this code, do it to x_unfocus_frame too. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5200 XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
286 | 5201 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
|
5202 #endif /* ! 0 */ |
286 | 5203 } |
5204 | |
771 | 5205 x_unfocus_frame (f) |
5206 struct frame *f; | |
286 | 5207 { |
369 | 5208 #if 0 |
771 | 5209 /* Look at the remarks in x_focus_on_frame. */ |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5210 if (FRAME_X_DISPLAY_INFO (f)->x_focus_frame == f) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5211 XSetInputFocus (FRAME_X_DISPLAY (f), PointerRoot, |
286 | 5212 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
|
5213 #endif /* ! 0 */ |
286 | 5214 } |
5215 | |
771 | 5216 /* Raise frame F. */ |
5217 | |
5218 x_raise_frame (f) | |
5219 struct frame *f; | |
286 | 5220 { |
1658
452ba03935d7
* xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents:
1530
diff
changeset
|
5221 if (f->async_visible) |
286 | 5222 { |
5223 BLOCK_INPUT; | |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5224 #ifdef USE_X_TOOLKIT |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5225 XRaiseWindow (FRAME_X_DISPLAY (f), XtWindow (f->output_data.x->widget)); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5226 #else /* not USE_X_TOOLKIT */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5227 XRaiseWindow (FRAME_X_DISPLAY (f), 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
|
5228 #endif /* not USE_X_TOOLKIT */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5229 XFlush (FRAME_X_DISPLAY (f)); |
286 | 5230 UNBLOCK_INPUT; |
5231 } | |
5232 } | |
5233 | |
771 | 5234 /* Lower frame F. */ |
5235 | |
5236 x_lower_frame (f) | |
5237 struct frame *f; | |
286 | 5238 { |
1658
452ba03935d7
* xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents:
1530
diff
changeset
|
5239 if (f->async_visible) |
286 | 5240 { |
5241 BLOCK_INPUT; | |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5242 #ifdef USE_X_TOOLKIT |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5243 XLowerWindow (FRAME_X_DISPLAY (f), XtWindow (f->output_data.x->widget)); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5244 #else /* not USE_X_TOOLKIT */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5245 XLowerWindow (FRAME_X_DISPLAY (f), 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
|
5246 #endif /* not USE_X_TOOLKIT */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5247 XFlush (FRAME_X_DISPLAY (f)); |
286 | 5248 UNBLOCK_INPUT; |
5249 } | |
5250 } | |
5251 | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5252 static void |
14411
bac274f178b0
(XTframe_raise_lower): Rename arg `raise' to `raise_flag'.
Richard M. Stallman <rms@gnu.org>
parents:
14305
diff
changeset
|
5253 XTframe_raise_lower (f, raise_flag) |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5254 FRAME_PTR f; |
14411
bac274f178b0
(XTframe_raise_lower): Rename arg `raise' to `raise_flag'.
Richard M. Stallman <rms@gnu.org>
parents:
14305
diff
changeset
|
5255 int raise_flag; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5256 { |
14411
bac274f178b0
(XTframe_raise_lower): Rename arg `raise' to `raise_flag'.
Richard M. Stallman <rms@gnu.org>
parents:
14305
diff
changeset
|
5257 if (raise_flag) |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5258 x_raise_frame (f); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5259 else |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5260 x_lower_frame (f); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5261 } |
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
5262 |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
5263 /* Change of visibility. */ |
286 | 5264 |
12192
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5265 /* This tries to wait until the frame is really visible. |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5266 However, if the window manager asks the user where to position |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5267 the frame, this will return before the user finishes doing that. |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5268 The frame will not actually be visible at that time, |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5269 but it will become visible later when the window manager |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5270 finishes with it. */ |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5271 |
771 | 5272 x_make_frame_visible (f) |
5273 struct frame *f; | |
286 | 5274 { |
5275 int mask; | |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
5276 Lisp_Object type; |
286 | 5277 |
429 | 5278 BLOCK_INPUT; |
5279 | |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
5280 type = x_icon_type (f); |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
5281 if (!NILP (type)) |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
5282 x_bitmap_icon (f, type); |
9446
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
5283 |
771 | 5284 if (! FRAME_VISIBLE_P (f)) |
286 | 5285 { |
12192
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5286 /* We test FRAME_GARBAGED_P here to make sure we don't |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5287 call x_set_offset a second time |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5288 if we get to x_make_frame_visible a second time |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5289 before the window gets really visible. */ |
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5290 if (! FRAME_ICONIFIED_P (f) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5291 && ! f->output_data.x->asked_for_visible) |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5292 x_set_offset (f, f->output_data.x->left_pos, f->output_data.x->top_pos, 0); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5293 |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5294 f->output_data.x->asked_for_visible = 1; |
12192
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
5295 |
429 | 5296 if (! EQ (Vx_no_window_manager, Qt)) |
771 | 5297 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
|
5298 #ifdef USE_X_TOOLKIT |
7167
2fa74c48e4e5
(x_make_frame_visible): Use XtMapWidget, not XtPopup.
Richard M. Stallman <rms@gnu.org>
parents:
7128
diff
changeset
|
5299 /* This was XtPopup, but that did nothing for an iconified frame. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5300 XtMapWidget (f->output_data.x->widget); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5301 #else /* not USE_X_TOOLKIT */ |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5302 XMapRaised (FRAME_X_DISPLAY (f), 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
|
5303 #endif /* not USE_X_TOOLKIT */ |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5304 #if 0 /* This seems to bring back scroll bars in the wrong places |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5305 if the window configuration has changed. They seem |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5306 to come back ok without this. */ |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5307 if (FRAME_HAS_VERTICAL_SCROLL_BARS (f)) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5308 XMapSubwindows (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f)); |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5309 #endif |
429 | 5310 } |
286 | 5311 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5312 XFlush (FRAME_X_DISPLAY (f)); |
429 | 5313 |
7959
224440646fa7
(make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents:
7935
diff
changeset
|
5314 /* Synchronize to ensure Emacs knows the frame is visible |
224440646fa7
(make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents:
7935
diff
changeset
|
5315 before we do anything else. We do this loop with input not blocked |
224440646fa7
(make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents:
7935
diff
changeset
|
5316 so that incoming events are handled. */ |
224440646fa7
(make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents:
7935
diff
changeset
|
5317 { |
224440646fa7
(make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents:
7935
diff
changeset
|
5318 Lisp_Object frame; |
9337
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5319 int count = input_signal_count; |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5320 |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5321 /* This must come after we set COUNT. */ |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5322 UNBLOCK_INPUT; |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5323 |
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
5324 XSETFRAME (frame, f); |
9337
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5325 |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5326 while (1) |
8098
e44c31d682b1
(x_draw_box): Use curs_x and curs_y, not f->cursor_[xy].
Richard M. Stallman <rms@gnu.org>
parents:
8036
diff
changeset
|
5327 { |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5328 x_sync (f); |
9337
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5329 /* Once we have handled input events, |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5330 we should have received the MapNotify if one is coming. |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5331 So if we have not got it yet, stop looping. |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5332 Some window managers make their own decisions |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5333 about visibility. */ |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5334 if (input_signal_count != count) |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5335 break; |
8609
145a583d9128
(x_make_frame_visible): Raise a signal to cause the pending X I/O to be read.
Karl Heuer <kwzh@gnu.org>
parents:
8567
diff
changeset
|
5336 /* Machines that do polling rather than SIGIO have been observed |
8634
187df0aff719
(x_make_frame_visible): Call signal handler directly.
Karl Heuer <kwzh@gnu.org>
parents:
8609
diff
changeset
|
5337 to go into a busy-wait here. So we'll fake an alarm signal |
187df0aff719
(x_make_frame_visible): Call signal handler directly.
Karl Heuer <kwzh@gnu.org>
parents:
8609
diff
changeset
|
5338 to let the handler know that there's something to be read. |
187df0aff719
(x_make_frame_visible): Call signal handler directly.
Karl Heuer <kwzh@gnu.org>
parents:
8609
diff
changeset
|
5339 We used to raise a real alarm, but it seems that the handler |
187df0aff719
(x_make_frame_visible): Call signal handler directly.
Karl Heuer <kwzh@gnu.org>
parents:
8609
diff
changeset
|
5340 isn't always enabled here. This is probably a bug. */ |
8682
42f95b1368ea
(x_make_frame_visible): Call input_polling_used.
Richard M. Stallman <rms@gnu.org>
parents:
8652
diff
changeset
|
5341 if (input_polling_used ()) |
8652 | 5342 { |
5343 /* It could be confusing if a real alarm arrives while processing | |
5344 the fake one. Turn it off and let the handler reset it. */ | |
5345 alarm (0); | |
5346 input_poll_signal (); | |
5347 } | |
9337
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5348 /* Once we have handled input events, |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5349 we should have received the MapNotify if one is coming. |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5350 So if we have not got it yet, stop looping. |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5351 Some window managers make their own decisions |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5352 about visibility. */ |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5353 if (input_signal_count != count) |
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
5354 break; |
8098
e44c31d682b1
(x_draw_box): Use curs_x and curs_y, not f->cursor_[xy].
Richard M. Stallman <rms@gnu.org>
parents:
8036
diff
changeset
|
5355 } |
7959
224440646fa7
(make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents:
7935
diff
changeset
|
5356 FRAME_SAMPLE_VISIBILITY (f); |
224440646fa7
(make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents:
7935
diff
changeset
|
5357 } |
286 | 5358 } |
5359 | |
5360 /* Change from mapped state to withdrawn state. */ | |
5361 | |
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
5362 /* Make the frame visible (mapped and not iconified). */ |
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
5363 |
771 | 5364 x_make_frame_invisible (f) |
5365 struct frame *f; | |
286 | 5366 { |
5367 int mask; | |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5368 Window window; |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5369 |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5370 #ifdef USE_X_TOOLKIT |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5371 /* Use the frame's outermost window, not the one we normally draw on. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5372 window = XtWindow (f->output_data.x->widget); |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5373 #else /* not USE_X_TOOLKIT */ |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5374 window = FRAME_X_WINDOW (f); |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5375 #endif /* not USE_X_TOOLKIT */ |
286 | 5376 |
3284
a47979ffad1e
(XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents:
3282
diff
changeset
|
5377 /* Don't keep the highlight on an invisible frame. */ |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5378 if (FRAME_X_DISPLAY_INFO (f)->x_highlight_frame == f) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5379 FRAME_X_DISPLAY_INFO (f)->x_highlight_frame = 0; |
3284
a47979ffad1e
(XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents:
3282
diff
changeset
|
5380 |
6983
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5381 #if 0/* This might add unreliability; I don't trust it -- rms. */ |
3284
a47979ffad1e
(XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents:
3282
diff
changeset
|
5382 if (! f->async_visible && ! f->async_iconified) |
286 | 5383 return; |
6983
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5384 #endif |
286 | 5385 |
5386 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
|
5387 |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5388 /* Before unmapping the window, update the WM_SIZE_HINTS property to claim |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5389 that the current position of the window is user-specified, rather than |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5390 program-specified, so that when the window is mapped again, it will be |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5391 placed at the same location, without forcing the user to position it |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5392 by hand again (they have already done that once for this window.) */ |
11915
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
5393 x_wm_set_size_hint (f, (long) 0, 1); |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5394 |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
5395 #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
|
5396 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5397 if (! XWithdrawWindow (FRAME_X_DISPLAY (f), window, |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5398 DefaultScreen (FRAME_X_DISPLAY (f)))) |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
5399 { |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
5400 UNBLOCK_INPUT_RESIGNAL; |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5401 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
|
5402 } |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
5403 #else /* ! defined (HAVE_X11R4) */ |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
5404 |
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
5405 /* Tell the window manager what we're going to do. */ |
286 | 5406 if (! EQ (Vx_no_window_manager, Qt)) |
5407 { | |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5408 XEvent unmap; |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5409 |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5410 unmap.xunmap.type = UnmapNotify; |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5411 unmap.xunmap.window = window; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5412 unmap.xunmap.event = DefaultRootWindow (FRAME_X_DISPLAY (f)); |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5413 unmap.xunmap.from_configure = False; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5414 if (! XSendEvent (FRAME_X_DISPLAY (f), |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5415 DefaultRootWindow (FRAME_X_DISPLAY (f)), |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5416 False, |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5417 SubstructureRedirectMask|SubstructureNotifyMask, |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5418 &unmap)) |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5419 { |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5420 UNBLOCK_INPUT_RESIGNAL; |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5421 error ("Can't notify window manager of withdrawal"); |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5422 } |
286 | 5423 } |
5424 | |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5425 /* Unmap the window ourselves. Cheeky! */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5426 XUnmapWindow (FRAME_X_DISPLAY (f), window); |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
5427 #endif /* ! defined (HAVE_X11R4) */ |
286 | 5428 |
6983
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5429 /* We can't distinguish this from iconification |
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5430 just by the event that we get from the server. |
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5431 So we can't win using the usual strategy of letting |
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5432 FRAME_SAMPLE_VISIBILITY set this. So do it by hand, |
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5433 and synchronize with the server to make sure we agree. */ |
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5434 f->visible = 0; |
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5435 FRAME_ICONIFIED_P (f) = 0; |
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5436 f->async_visible = 0; |
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5437 f->async_iconified = 0; |
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5438 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5439 x_sync (f); |
6983
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
5440 |
286 | 5441 UNBLOCK_INPUT; |
5442 } | |
5443 | |
5444 /* Change window state from mapped to iconified. */ | |
5445 | |
771 | 5446 x_iconify_frame (f) |
5447 struct frame *f; | |
286 | 5448 { |
5449 int mask; | |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5450 int result; |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
5451 Lisp_Object type; |
286 | 5452 |
3284
a47979ffad1e
(XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents:
3282
diff
changeset
|
5453 /* Don't keep the highlight on an invisible frame. */ |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5454 if (FRAME_X_DISPLAY_INFO (f)->x_highlight_frame == f) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5455 FRAME_X_DISPLAY_INFO (f)->x_highlight_frame = 0; |
3284
a47979ffad1e
(XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents:
3282
diff
changeset
|
5456 |
1658
452ba03935d7
* xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents:
1530
diff
changeset
|
5457 if (f->async_iconified) |
286 | 5458 return; |
5459 | |
9446
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
5460 BLOCK_INPUT; |
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
5461 |
13627
8873aa3451dd
(XTmouse_position): Exit the loop if child == win.
Richard M. Stallman <rms@gnu.org>
parents:
13598
diff
changeset
|
5462 FRAME_SAMPLE_VISIBILITY (f); |
8873aa3451dd
(XTmouse_position): Exit the loop if child == win.
Richard M. Stallman <rms@gnu.org>
parents:
13598
diff
changeset
|
5463 |
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
5464 type = x_icon_type (f); |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
5465 if (!NILP (type)) |
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
5466 x_bitmap_icon (f, type); |
9446
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
5467 |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5468 #ifdef USE_X_TOOLKIT |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5469 |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5470 if (! FRAME_VISIBLE_P (f)) |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5471 { |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5472 if (! EQ (Vx_no_window_manager, Qt)) |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5473 x_wm_set_window_state (f, IconicState); |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5474 /* This was XtPopup, but that did nothing for an iconified frame. */ |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5475 XtMapWidget (f->output_data.x->widget); |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5476 UNBLOCK_INPUT; |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5477 return; |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5478 } |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5479 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5480 result = XIconifyWindow (FRAME_X_DISPLAY (f), |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5481 XtWindow (f->output_data.x->widget), |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5482 DefaultScreen (FRAME_X_DISPLAY (f))); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5483 UNBLOCK_INPUT; |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5484 |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5485 if (!result) |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5486 error ("Can't notify window manager of iconification"); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5487 |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5488 f->async_iconified = 1; |
5740
48da4ed089e9
(x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents:
5737
diff
changeset
|
5489 |
48da4ed089e9
(x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents:
5737
diff
changeset
|
5490 BLOCK_INPUT; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5491 XFlush (FRAME_X_DISPLAY (f)); |
5740
48da4ed089e9
(x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents:
5737
diff
changeset
|
5492 UNBLOCK_INPUT; |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5493 #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
|
5494 |
7738
a810335742bb
(x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents:
7706
diff
changeset
|
5495 /* Make sure the X server knows where the window should be positioned, |
a810335742bb
(x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents:
7706
diff
changeset
|
5496 in case the user deiconifies with the window manager. */ |
a810335742bb
(x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents:
7706
diff
changeset
|
5497 if (! FRAME_VISIBLE_P (f) && !FRAME_ICONIFIED_P (f)) |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5498 x_set_offset (f, f->output_data.x->left_pos, f->output_data.x->top_pos, 0); |
7738
a810335742bb
(x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents:
7706
diff
changeset
|
5499 |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5500 /* 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
|
5501 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
|
5502 |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5503 /* 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
|
5504 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
|
5505 { |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5506 XEvent message; |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
5507 |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
5508 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
|
5509 message.xclient.type = ClientMessage; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5510 message.xclient.message_type = FRAME_X_DISPLAY_INFO (f)->Xatom_wm_change_state; |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5511 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
|
5512 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
|
5513 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5514 if (! XSendEvent (FRAME_X_DISPLAY (f), |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5515 DefaultRootWindow (FRAME_X_DISPLAY (f)), |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5516 False, |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5517 SubstructureRedirectMask | SubstructureNotifyMask, |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5518 &message)) |
286 | 5519 { |
5520 UNBLOCK_INPUT_RESIGNAL; | |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5521 error ("Can't notify window manager of iconification"); |
286 | 5522 } |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5523 } |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5524 |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
5525 /* X11R3: set the initial_state field of the window manager hints to |
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5526 IconicState. */ |
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
5527 x_wm_set_window_state (f, IconicState); |
286 | 5528 |
4304
b5014da888a8
(x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents:
4277
diff
changeset
|
5529 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
|
5530 { |
b5014da888a8
(x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents:
4277
diff
changeset
|
5531 /* If the frame was withdrawn, before, we must map it. */ |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5532 XMapRaised (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f)); |
4304
b5014da888a8
(x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents:
4277
diff
changeset
|
5533 } |
b5014da888a8
(x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents:
4277
diff
changeset
|
5534 |
1658
452ba03935d7
* xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents:
1530
diff
changeset
|
5535 f->async_iconified = 1; |
286 | 5536 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5537 XFlush (FRAME_X_DISPLAY (f)); |
286 | 5538 UNBLOCK_INPUT; |
5740
48da4ed089e9
(x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents:
5737
diff
changeset
|
5539 #endif /* not USE_X_TOOLKIT */ |
286 | 5540 } |
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
5541 |
1810
bf618128d973
* xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents:
1803
diff
changeset
|
5542 /* 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
|
5543 |
bf618128d973
* xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents:
1803
diff
changeset
|
5544 x_destroy_window (f) |
771 | 5545 struct frame *f; |
286 | 5546 { |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5547 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5548 |
286 | 5549 BLOCK_INPUT; |
1810
bf618128d973
* xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents:
1803
diff
changeset
|
5550 |
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5551 /* If a display connection is dead, don't try sending more |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5552 commands to the X server. */ |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5553 if (dpyinfo->display != 0) |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5554 { |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5555 if (f->output_data.x->icon_desc != 0) |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5556 XDestroyWindow (FRAME_X_DISPLAY (f), f->output_data.x->icon_desc); |
14830
34db919835d3
(x_destroy_window) [HAVE_X_I18N]: Free xic and xim of frame.
Richard M. Stallman <rms@gnu.org>
parents:
14826
diff
changeset
|
5557 #ifdef HAVE_X_I18N |
34db919835d3
(x_destroy_window) [HAVE_X_I18N]: Free xic and xim of frame.
Richard M. Stallman <rms@gnu.org>
parents:
14826
diff
changeset
|
5558 if (FRAME_XIM (f)) |
34db919835d3
(x_destroy_window) [HAVE_X_I18N]: Free xic and xim of frame.
Richard M. Stallman <rms@gnu.org>
parents:
14826
diff
changeset
|
5559 { |
34db919835d3
(x_destroy_window) [HAVE_X_I18N]: Free xic and xim of frame.
Richard M. Stallman <rms@gnu.org>
parents:
14826
diff
changeset
|
5560 XDestroyIC (FRAME_XIC (f)); |
14942
3432e5570488
(x_destroy_window): Do call XCloseIM if X11R6.
Richard M. Stallman <rms@gnu.org>
parents:
14921
diff
changeset
|
5561 #if ! defined (SOLARIS2) || defined (HAVE_X11R6) |
3432e5570488
(x_destroy_window): Do call XCloseIM if X11R6.
Richard M. Stallman <rms@gnu.org>
parents:
14921
diff
changeset
|
5562 /* This line causes crashes on Solaris with Openwin, |
3432e5570488
(x_destroy_window): Do call XCloseIM if X11R6.
Richard M. Stallman <rms@gnu.org>
parents:
14921
diff
changeset
|
5563 due to an apparent bug in XCloseIM. |
3432e5570488
(x_destroy_window): Do call XCloseIM if X11R6.
Richard M. Stallman <rms@gnu.org>
parents:
14921
diff
changeset
|
5564 X11R6 seems not to have the bug. */ |
14830
34db919835d3
(x_destroy_window) [HAVE_X_I18N]: Free xic and xim of frame.
Richard M. Stallman <rms@gnu.org>
parents:
14826
diff
changeset
|
5565 XCloseIM (FRAME_XIM (f)); |
14921
5a1524631bca
(x_destroy_window) [SOLARIS2]: Don't free the IC or IM.
Richard M. Stallman <rms@gnu.org>
parents:
14896
diff
changeset
|
5566 #endif |
14830
34db919835d3
(x_destroy_window) [HAVE_X_I18N]: Free xic and xim of frame.
Richard M. Stallman <rms@gnu.org>
parents:
14826
diff
changeset
|
5567 } |
34db919835d3
(x_destroy_window) [HAVE_X_I18N]: Free xic and xim of frame.
Richard M. Stallman <rms@gnu.org>
parents:
14826
diff
changeset
|
5568 #endif |
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5569 XDestroyWindow (FRAME_X_DISPLAY (f), f->output_data.x->window_desc); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5570 #ifdef USE_X_TOOLKIT |
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5571 XtDestroyWidget (f->output_data.x->widget); |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5572 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
|
5573 #endif /* USE_X_TOOLKIT */ |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5574 |
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5575 free_frame_faces (f); |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5576 XFlush (FRAME_X_DISPLAY (f)); |
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5577 } |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5578 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5579 xfree (f->output_data.x); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5580 f->output_data.x = 0; |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5581 if (f == dpyinfo->x_focus_frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5582 dpyinfo->x_focus_frame = 0; |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5583 if (f == dpyinfo->x_focus_event_frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5584 dpyinfo->x_focus_event_frame = 0; |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5585 if (f == dpyinfo->x_highlight_frame) |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
5586 dpyinfo->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
|
5587 |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5588 dpyinfo->reference_count--; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5589 |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5590 if (f == dpyinfo->mouse_face_mouse_frame) |
6934
e0ab4f59004e
(dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents:
6883
diff
changeset
|
5591 { |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5592 dpyinfo->mouse_face_beg_row |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5593 = dpyinfo->mouse_face_beg_col = -1; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5594 dpyinfo->mouse_face_end_row |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5595 = dpyinfo->mouse_face_end_col = -1; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5596 dpyinfo->mouse_face_window = Qnil; |
6934
e0ab4f59004e
(dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents:
6883
diff
changeset
|
5597 } |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5598 |
1810
bf618128d973
* xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents:
1803
diff
changeset
|
5599 UNBLOCK_INPUT; |
286 | 5600 } |
5601 | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5602 /* Setting window manager hints. */ |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5603 |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5604 /* Set the normal size hints for the window manager, for frame F. |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5605 FLAGS is the flags word to use--or 0 meaning preserve the flags |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5606 that the window now has. |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5607 If USER_POSITION is nonzero, we set the USPosition |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5608 flag (this is useful when FLAGS is 0). */ |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5609 |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5610 x_wm_set_size_hint (f, flags, user_position) |
771 | 5611 struct frame *f; |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5612 long flags; |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5613 int user_position; |
286 | 5614 { |
5615 XSizeHints size_hints; | |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5616 |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5617 #ifdef USE_X_TOOLKIT |
6631
eea1789dc6fd
(x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6626
diff
changeset
|
5618 Arg al[2]; |
eea1789dc6fd
(x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6626
diff
changeset
|
5619 int ac = 0; |
eea1789dc6fd
(x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6626
diff
changeset
|
5620 Dimension widget_width, widget_height; |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5621 Window window = XtWindow (f->output_data.x->widget); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5622 #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
|
5623 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
|
5624 #endif /* not USE_X_TOOLKIT */ |
286 | 5625 |
7187
ca0102511d80
(x_wm_set_size_hint): Don't set PMaxSize.
Richard M. Stallman <rms@gnu.org>
parents:
7169
diff
changeset
|
5626 /* Setting PMaxSize caused various problems. */ |
ca0102511d80
(x_wm_set_size_hint): Don't set PMaxSize.
Richard M. Stallman <rms@gnu.org>
parents:
7169
diff
changeset
|
5627 size_hints.flags = PResizeInc | PMinSize /* | PMaxSize */; |
286 | 5628 |
771 | 5629 flexlines = f->height; |
5630 | |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5631 size_hints.x = f->output_data.x->left_pos; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5632 size_hints.y = f->output_data.x->top_pos; |
7123
4f2c825cc0f8
(x_wm_set_size_hint): Do set max_height, max_width, and PMaxSize flag.
Richard M. Stallman <rms@gnu.org>
parents:
7122
diff
changeset
|
5633 |
6631
eea1789dc6fd
(x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6626
diff
changeset
|
5634 #ifdef USE_X_TOOLKIT |
eea1789dc6fd
(x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6626
diff
changeset
|
5635 XtSetArg (al[ac], XtNwidth, &widget_width); ac++; |
eea1789dc6fd
(x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6626
diff
changeset
|
5636 XtSetArg (al[ac], XtNheight, &widget_height); ac++; |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5637 XtGetValues (f->output_data.x->widget, al, ac); |
6631
eea1789dc6fd
(x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6626
diff
changeset
|
5638 size_hints.height = widget_height; |
eea1789dc6fd
(x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6626
diff
changeset
|
5639 size_hints.width = widget_width; |
eea1789dc6fd
(x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6626
diff
changeset
|
5640 #else /* not USE_X_TOOLKIT */ |
771 | 5641 size_hints.height = PIXEL_HEIGHT (f); |
5642 size_hints.width = PIXEL_WIDTH (f); | |
6631
eea1789dc6fd
(x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
6626
diff
changeset
|
5643 #endif /* not USE_X_TOOLKIT */ |
7123
4f2c825cc0f8
(x_wm_set_size_hint): Do set max_height, max_width, and PMaxSize flag.
Richard M. Stallman <rms@gnu.org>
parents:
7122
diff
changeset
|
5644 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5645 size_hints.width_inc = FONT_WIDTH (f->output_data.x->font); |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5646 size_hints.height_inc = f->output_data.x->line_height; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5647 size_hints.max_width |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5648 = FRAME_X_DISPLAY_INFO (f)->width - CHAR_TO_PIXEL_WIDTH (f, 0); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5649 size_hints.max_height |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5650 = FRAME_X_DISPLAY_INFO (f)->height - CHAR_TO_PIXEL_HEIGHT (f, 0); |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5651 |
12189 | 5652 /* Calculate the base and minimum sizes. |
5653 | |
5654 (When we use the X toolkit, we don't do it here. | |
5655 Instead we copy the values that the widgets are using, below.) */ | |
5656 #ifndef USE_X_TOOLKIT | |
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
5657 { |
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
|
5658 int base_width, base_height; |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5659 int min_rows = 0, min_cols = 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
|
5660 |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5661 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
|
5662 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
|
5663 |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5664 check_frame_size (f, &min_rows, &min_cols); |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5665 |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5666 /* The window manager uses the base width hints to calculate the |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5667 current number of rows and columns in the frame while |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5668 resizing; min_width and min_height aren't useful for this |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5669 purpose, since they might not give the dimensions for a |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5670 zero-row, zero-column frame. |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
5671 |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5672 We use the base_width and base_height members if we have |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5673 them; otherwise, we set the min_width and min_height members |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5674 to the size for a zero x zero frame. */ |
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
|
5675 |
cd3d59155bf7
* xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents:
1077
diff
changeset
|
5676 #ifdef HAVE_X11R4 |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5677 size_hints.flags |= PBaseSize; |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5678 size_hints.base_width = base_width; |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5679 size_hints.base_height = base_height; |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5680 size_hints.min_width = base_width + min_cols * size_hints.width_inc; |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5681 size_hints.min_height = base_height + min_rows * size_hints.height_inc; |
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
|
5682 #else |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5683 size_hints.min_width = base_width; |
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5684 size_hints.min_height = base_height; |
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
|
5685 #endif |
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
5686 } |
286 | 5687 |
12189 | 5688 /* If we don't need the old flags, we don't need the old hint at all. */ |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5689 if (flags) |
286 | 5690 { |
12189 | 5691 size_hints.flags |= flags; |
5692 goto no_read; | |
5693 } | |
5694 #endif /* not USE_X_TOOLKIT */ | |
5695 | |
5696 { | |
5697 XSizeHints hints; /* Sometimes I hate X Windows... */ | |
5698 long supplied_return; | |
5699 int value; | |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5700 |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5701 #ifdef HAVE_X11R4 |
12189 | 5702 value = XGetWMNormalHints (FRAME_X_DISPLAY (f), window, &hints, |
5703 &supplied_return); | |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5704 #else |
12189 | 5705 value = XGetNormalHints (FRAME_X_DISPLAY (f), window, &hints); |
5706 #endif | |
5707 | |
5708 #ifdef USE_X_TOOLKIT | |
5709 size_hints.base_height = hints.base_height; | |
5710 size_hints.base_width = hints.base_width; | |
5711 size_hints.min_height = hints.min_height; | |
5712 size_hints.min_width = hints.min_width; | |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5713 #endif |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
5714 |
12189 | 5715 if (flags) |
5716 size_hints.flags |= flags; | |
5717 else | |
5718 { | |
5719 if (value == 0) | |
5720 hints.flags = 0; | |
5721 if (hints.flags & PSize) | |
5722 size_hints.flags |= PSize; | |
5723 if (hints.flags & PPosition) | |
5724 size_hints.flags |= PPosition; | |
5725 if (hints.flags & USPosition) | |
5726 size_hints.flags |= USPosition; | |
5727 if (hints.flags & USSize) | |
5728 size_hints.flags |= USSize; | |
5729 } | |
5730 } | |
5731 | |
5732 no_read: | |
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
5733 |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5734 #ifdef PWinGravity |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5735 size_hints.win_gravity = f->output_data.x->win_gravity; |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5736 size_hints.flags |= PWinGravity; |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5737 |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5738 if (user_position) |
4630
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
5739 { |
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5740 size_hints.flags &= ~ PPosition; |
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
5741 size_hints.flags |= USPosition; |
4630
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
5742 } |
4777
21ed9c9bb210
(w_wn_set_size_hint): Make recent window gravity addition
Brian Fox <bfox@gnu.org>
parents:
4696
diff
changeset
|
5743 #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
|
5744 |
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
|
5745 #ifdef HAVE_X11R4 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5746 XSetWMNormalHints (FRAME_X_DISPLAY (f), 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
|
5747 #else |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5748 XSetNormalHints (FRAME_X_DISPLAY (f), 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
|
5749 #endif |
286 | 5750 } |
5751 | |
5752 /* Used for IconicState or NormalState */ | |
771 | 5753 x_wm_set_window_state (f, state) |
5754 struct frame *f; | |
286 | 5755 int state; |
5756 { | |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5757 #ifdef USE_X_TOOLKIT |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5758 Arg al[1]; |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5759 |
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5760 XtSetArg (al[0], XtNinitialState, state); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5761 XtSetValues (f->output_data.x->widget, al, 1); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5762 #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
|
5763 Window window = FRAME_X_WINDOW (f); |
286 | 5764 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5765 f->output_data.x->wm_hints.flags |= StateHint; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5766 f->output_data.x->wm_hints.initial_state = state; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5767 |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5768 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->output_data.x->wm_hints); |
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
5769 #endif /* not USE_X_TOOLKIT */ |
286 | 5770 } |
5771 | |
9542
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
5772 x_wm_set_icon_pixmap (f, pixmap_id) |
771 | 5773 struct frame *f; |
9542
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
5774 int pixmap_id; |
286 | 5775 { |
7806
ef7a60d59543
(x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents:
7801
diff
changeset
|
5776 #ifdef USE_X_TOOLKIT |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5777 Window window = XtWindow (f->output_data.x->widget); |
7806
ef7a60d59543
(x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents:
7801
diff
changeset
|
5778 #else |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
5779 Window window = FRAME_X_WINDOW (f); |
7806
ef7a60d59543
(x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents:
7801
diff
changeset
|
5780 #endif |
286 | 5781 |
9542
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
5782 if (pixmap_id > 0) |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5783 { |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5784 Pixmap icon_pixmap = x_bitmap_pixmap (f, pixmap_id); |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5785 f->output_data.x->wm_hints.icon_pixmap = icon_pixmap; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5786 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5787 else |
12966
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5788 { |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5789 /* It seems there is no way to turn off use of an icon pixmap. |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5790 The following line does it, only if no icon has yet been created, |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5791 for some window managers. But with mwm it crashes. |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5792 Some people say it should clear the IconPixmapHint bit in this case, |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5793 but that doesn't work, and the X consortium said it isn't the |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5794 right thing at all. Since there is no way to win, |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5795 best to explicitly give up. */ |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5796 #if 0 |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5797 f->output_data.x->wm_hints.icon_pixmap = None; |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5798 #else |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5799 return; |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5800 #endif |
ce60b1a64399
(x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents:
12771
diff
changeset
|
5801 } |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5802 |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5803 f->output_data.x->wm_hints.flags |= IconPixmapHint; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5804 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->output_data.x->wm_hints); |
286 | 5805 } |
5806 | |
771 | 5807 x_wm_set_icon_position (f, icon_x, icon_y) |
5808 struct frame *f; | |
286 | 5809 int icon_x, icon_y; |
5810 { | |
7806
ef7a60d59543
(x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents:
7801
diff
changeset
|
5811 #ifdef USE_X_TOOLKIT |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5812 Window window = XtWindow (f->output_data.x->widget); |
7806
ef7a60d59543
(x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents:
7801
diff
changeset
|
5813 #else |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
5814 Window window = FRAME_X_WINDOW (f); |
7806
ef7a60d59543
(x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents:
7801
diff
changeset
|
5815 #endif |
286 | 5816 |
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5817 f->output_data.x->wm_hints.flags |= IconPositionHint; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5818 f->output_data.x->wm_hints.icon_x = icon_x; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5819 f->output_data.x->wm_hints.icon_y = icon_y; |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5820 |
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
5821 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->output_data.x->wm_hints); |
286 | 5822 } |
5823 | |
5824 | |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5825 /* Initialization. */ |
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5826 |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5827 #ifdef USE_X_TOOLKIT |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5828 static XrmOptionDescRec emacs_options[] = { |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5829 {"-geometry", ".geometry", XrmoptionSepArg, NULL}, |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5830 {"-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
|
5831 |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5832 {"-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
|
5833 XrmoptionSepArg, NULL}, |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5834 {"-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
|
5835 |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5836 {"-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
|
5837 {"-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
|
5838 {"-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
|
5839 {"-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
|
5840 {"-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
|
5841 {"-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
|
5842 {"-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
|
5843 }; |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5844 #endif /* USE_X_TOOLKIT */ |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5845 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5846 static int x_initialized; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5847 |
11015 | 5848 #ifdef MULTI_KBOARD |
5849 /* Test whether two display-name strings agree up to the dot that separates | |
5850 the screen number from the server number. */ | |
5851 static int | |
5852 same_x_server (name1, name2) | |
5853 char *name1, *name2; | |
5854 { | |
5855 int seen_colon = 0; | |
5856 for (; *name1 != '\0' && *name1 == *name2; name1++, name2++) | |
5857 { | |
5858 if (*name1 == ':') | |
5859 seen_colon++; | |
5860 if (seen_colon && *name1 == '.') | |
5861 return 1; | |
5862 } | |
5863 return (seen_colon | |
5864 && (*name1 == '.' || *name1 == '\0') | |
5865 && (*name2 == '.' || *name2 == '\0')); | |
5866 } | |
5867 #endif | |
5868 | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5869 struct x_display_info * |
7801
10e818a0248a
(x_term_init): New args xrm_option and resource_string.
Richard M. Stallman <rms@gnu.org>
parents:
7738
diff
changeset
|
5870 x_term_init (display_name, xrm_option, resource_name) |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5871 Lisp_Object display_name; |
7801
10e818a0248a
(x_term_init): New args xrm_option and resource_string.
Richard M. Stallman <rms@gnu.org>
parents:
7738
diff
changeset
|
5872 char *xrm_option; |
10e818a0248a
(x_term_init): New args xrm_option and resource_string.
Richard M. Stallman <rms@gnu.org>
parents:
7738
diff
changeset
|
5873 char *resource_name; |
286 | 5874 { |
771 | 5875 Lisp_Object frame; |
286 | 5876 char *defaultvalue; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5877 int connection; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5878 Display *dpy; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5879 struct x_display_info *dpyinfo; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5880 XrmDatabase xrdb; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5881 |
11997
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
5882 BLOCK_INPUT; |
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
5883 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5884 if (!x_initialized) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5885 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5886 x_initialize (); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5887 x_initialized = 1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5888 } |
286 | 5889 |
13232
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
5890 #ifdef HAVE_X_I18N |
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
5891 setlocale (LC_ALL, ""); |
14946
3ad13f2b6ea0
(x_term_init): Respecify LC_NUMERIC locale.
Richard M. Stallman <rms@gnu.org>
parents:
14942
diff
changeset
|
5892 /* In case we just overrode what init_lread did, redo it. */ |
3ad13f2b6ea0
(x_term_init): Respecify LC_NUMERIC locale.
Richard M. Stallman <rms@gnu.org>
parents:
14942
diff
changeset
|
5893 setlocale (LC_NUMERIC, "C"); |
14963
6ac4f300f9b4
Include locale.h if HAVE_SETLOCALE.
Richard M. Stallman <rms@gnu.org>
parents:
14946
diff
changeset
|
5894 setlocale (LC_TIME, "C"); |
13232
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
5895 #endif |
e31057e55df7
(x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents:
13205
diff
changeset
|
5896 |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5897 #ifdef USE_X_TOOLKIT |
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
5898 /* weiner@footloose.sps.mot.com reports that this causes |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
5899 errors with X11R5: |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
5900 X protocol error: BadAtom (invalid Atom parameter) |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
5901 on protocol request 18skiloaf. |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
5902 So let's not use it until R6. */ |
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
5903 #ifdef HAVE_X11XTR6 |
9446
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
5904 XtSetLanguageProc (NULL, NULL, NULL); |
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
5905 #endif |
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
5906 |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5907 { |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5908 int argc = 0; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5909 char *argv[3]; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5910 |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5911 argv[0] = ""; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5912 argc = 1; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5913 if (xrm_option) |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5914 { |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5915 argv[argc++] = "-xrm"; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5916 argv[argc++] = xrm_option; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5917 } |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5918 dpy = XtOpenDisplay (Xt_app_con, XSTRING (display_name)->data, |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5919 resource_name, EMACS_CLASS, |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5920 emacs_options, XtNumber (emacs_options), |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5921 &argc, argv); |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
5922 |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
5923 #ifdef HAVE_X11XTR6 |
14963
6ac4f300f9b4
Include locale.h if HAVE_SETLOCALE.
Richard M. Stallman <rms@gnu.org>
parents:
14946
diff
changeset
|
5924 /* I think this is to compensate for XtSetLanguageProc. */ |
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
5925 setlocale (LC_NUMERIC, "C"); |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
5926 setlocale (LC_TIME, "C"); |
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
5927 #endif |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
5928 } |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5929 |
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5930 #else /* not USE_X_TOOLKIT */ |
9446
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
5931 #ifdef HAVE_X11R5 |
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
5932 XSetLocaleModifiers (""); |
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
5933 #endif |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5934 dpy = XOpenDisplay (XSTRING (display_name)->data); |
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
5935 #endif /* not USE_X_TOOLKIT */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5936 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5937 /* Detect failure. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5938 if (dpy == 0) |
11997
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
5939 { |
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
5940 UNBLOCK_INPUT; |
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
5941 return 0; |
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
5942 } |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5943 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5944 /* We have definitely succeeded. Record the new connection. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5945 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5946 dpyinfo = (struct x_display_info *) xmalloc (sizeof (struct x_display_info)); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5947 |
11015 | 5948 #ifdef MULTI_KBOARD |
5949 { | |
5950 struct x_display_info *share; | |
5951 Lisp_Object tail; | |
5952 | |
5953 for (share = x_display_list, tail = x_display_name_list; share; | |
5954 share = share->next, tail = XCONS (tail)->cdr) | |
5955 if (same_x_server (XSTRING (XCONS (XCONS (tail)->car)->car)->data, | |
5956 XSTRING (display_name)->data)) | |
5957 break; | |
5958 if (share) | |
5959 dpyinfo->kboard = share->kboard; | |
5960 else | |
5961 { | |
5962 dpyinfo->kboard = (KBOARD *) xmalloc (sizeof (KBOARD)); | |
5963 init_kboard (dpyinfo->kboard); | |
11807
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
5964 if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound)) |
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
5965 { |
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
5966 char *vendor = ServerVendor (dpy); |
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
5967 dpyinfo->kboard->Vsystem_key_alist |
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
5968 = call1 (Qvendor_specific_keysyms, |
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
5969 build_string (vendor ? vendor : "")); |
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
5970 } |
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
5971 |
11015 | 5972 dpyinfo->kboard->next_kboard = all_kboards; |
5973 all_kboards = dpyinfo->kboard; | |
11544
cc965273a769
(x_term_init): If the previous kboard was the dummy one,
Karl Heuer <kwzh@gnu.org>
parents:
11536
diff
changeset
|
5974 /* Don't let the initial kboard remain current longer than necessary. |
cc965273a769
(x_term_init): If the previous kboard was the dummy one,
Karl Heuer <kwzh@gnu.org>
parents:
11536
diff
changeset
|
5975 That would cause problems if a file loaded on startup tries to |
cc965273a769
(x_term_init): If the previous kboard was the dummy one,
Karl Heuer <kwzh@gnu.org>
parents:
11536
diff
changeset
|
5976 prompt in the minibuffer. */ |
cc965273a769
(x_term_init): If the previous kboard was the dummy one,
Karl Heuer <kwzh@gnu.org>
parents:
11536
diff
changeset
|
5977 if (current_kboard == initial_kboard) |
cc965273a769
(x_term_init): If the previous kboard was the dummy one,
Karl Heuer <kwzh@gnu.org>
parents:
11536
diff
changeset
|
5978 current_kboard = dpyinfo->kboard; |
11015 | 5979 } |
5980 dpyinfo->kboard->reference_count++; | |
5981 } | |
10652
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
5982 #endif |
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
5983 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5984 /* Put this display on the chain. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5985 dpyinfo->next = x_display_list; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5986 x_display_list = dpyinfo; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5987 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5988 /* Put it on x_display_name_list as well, to keep them parallel. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5989 x_display_name_list = Fcons (Fcons (display_name, Qnil), |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5990 x_display_name_list); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5991 dpyinfo->name_list_element = XCONS (x_display_name_list)->car; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5992 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5993 dpyinfo->display = dpy; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5994 |
286 | 5995 #if 0 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5996 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
|
5997 #endif /* ! 0 */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5998 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5999 dpyinfo->x_id_name |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6000 = (char *) xmalloc (XSTRING (Vinvocation_name)->size |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6001 + XSTRING (Vsystem_name)->size |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6002 + 2); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6003 sprintf (dpyinfo->x_id_name, "%s@%s", |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6004 XSTRING (Vinvocation_name)->data, XSTRING (Vsystem_name)->data); |
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
6005 |
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
6006 /* Figure out which modifier bits mean what. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6007 x_find_modifier_meanings (dpyinfo); |
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
6008 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
6009 /* Get the scroll bar cursor. */ |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6010 dpyinfo->vertical_scroll_bar_cursor |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6011 = XCreateFontCursor (dpyinfo->display, XC_sb_v_double_arrow); |
2195
b20bb441f47f
(Xatom_wm_change_state): Define here.
Richard M. Stallman <rms@gnu.org>
parents:
2127
diff
changeset
|
6012 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6013 xrdb = x_load_resources (dpyinfo->display, xrm_option, |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6014 resource_name, EMACS_CLASS); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6015 #ifdef HAVE_XRMSETDATABASE |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6016 XrmSetDatabase (dpyinfo->display, xrdb); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6017 #else |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6018 dpyinfo->display->db = xrdb; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6019 #endif |
11162
95b70c82ec51
(x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents:
11122
diff
changeset
|
6020 /* Put the rdb where we can find it in a way that works on |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6021 all versions. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6022 dpyinfo->xrdb = xrdb; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6023 |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6024 dpyinfo->screen = ScreenOfDisplay (dpyinfo->display, |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6025 DefaultScreen (dpyinfo->display)); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6026 dpyinfo->visual = select_visual (dpyinfo->display, dpyinfo->screen, |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6027 &dpyinfo->n_planes); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6028 dpyinfo->height = HeightOfScreen (dpyinfo->screen); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6029 dpyinfo->width = WidthOfScreen (dpyinfo->screen); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6030 dpyinfo->root_window = RootWindowOfScreen (dpyinfo->screen); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6031 dpyinfo->grabbed = 0; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6032 dpyinfo->reference_count = 0; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6033 dpyinfo->icon_bitmap_id = -1; |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6034 dpyinfo->n_fonts = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6035 dpyinfo->font_table_size = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6036 dpyinfo->bitmaps = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6037 dpyinfo->bitmaps_size = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6038 dpyinfo->bitmaps_last = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6039 dpyinfo->scratch_cursor_gc = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6040 dpyinfo->mouse_face_mouse_frame = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6041 dpyinfo->mouse_face_deferred_gc = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6042 dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6043 dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6044 dpyinfo->mouse_face_face_id = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6045 dpyinfo->mouse_face_window = Qnil; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6046 dpyinfo->mouse_face_mouse_x = dpyinfo->mouse_face_mouse_y = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6047 dpyinfo->mouse_face_defer = 0; |
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
6048 dpyinfo->x_focus_frame = 0; |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
6049 dpyinfo->x_focus_event_frame = 0; |
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
6050 dpyinfo->x_highlight_frame = 0; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6051 |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6052 dpyinfo->Xatom_wm_protocols |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6053 = XInternAtom (dpyinfo->display, "WM_PROTOCOLS", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6054 dpyinfo->Xatom_wm_take_focus |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6055 = XInternAtom (dpyinfo->display, "WM_TAKE_FOCUS", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6056 dpyinfo->Xatom_wm_save_yourself |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6057 = XInternAtom (dpyinfo->display, "WM_SAVE_YOURSELF", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6058 dpyinfo->Xatom_wm_delete_window |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6059 = XInternAtom (dpyinfo->display, "WM_DELETE_WINDOW", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6060 dpyinfo->Xatom_wm_change_state |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6061 = XInternAtom (dpyinfo->display, "WM_CHANGE_STATE", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6062 dpyinfo->Xatom_wm_configure_denied |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6063 = XInternAtom (dpyinfo->display, "WM_CONFIGURE_DENIED", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6064 dpyinfo->Xatom_wm_window_moved |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6065 = XInternAtom (dpyinfo->display, "WM_MOVED", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6066 dpyinfo->Xatom_editres |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6067 = XInternAtom (dpyinfo->display, "Editres", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6068 dpyinfo->Xatom_CLIPBOARD |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6069 = XInternAtom (dpyinfo->display, "CLIPBOARD", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6070 dpyinfo->Xatom_TIMESTAMP |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6071 = XInternAtom (dpyinfo->display, "TIMESTAMP", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6072 dpyinfo->Xatom_TEXT |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6073 = XInternAtom (dpyinfo->display, "TEXT", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6074 dpyinfo->Xatom_DELETE |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6075 = XInternAtom (dpyinfo->display, "DELETE", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6076 dpyinfo->Xatom_MULTIPLE |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6077 = XInternAtom (dpyinfo->display, "MULTIPLE", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6078 dpyinfo->Xatom_INCR |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6079 = XInternAtom (dpyinfo->display, "INCR", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6080 dpyinfo->Xatom_EMACS_TMP |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6081 = XInternAtom (dpyinfo->display, "_EMACS_TMP_", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6082 dpyinfo->Xatom_TARGETS |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6083 = XInternAtom (dpyinfo->display, "TARGETS", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6084 dpyinfo->Xatom_NULL |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6085 = XInternAtom (dpyinfo->display, "NULL", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6086 dpyinfo->Xatom_ATOM_PAIR |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6087 = XInternAtom (dpyinfo->display, "ATOM_PAIR", False); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6088 |
11162
95b70c82ec51
(x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents:
11122
diff
changeset
|
6089 dpyinfo->cut_buffers_initialized = 0; |
95b70c82ec51
(x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents:
11122
diff
changeset
|
6090 |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6091 connection = ConnectionNumber (dpyinfo->display); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6092 dpyinfo->connection = connection; |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6093 |
9572 | 6094 #ifdef subprocesses |
6095 /* This is only needed for distinguishing keyboard and process input. */ | |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6096 if (connection != 0) |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6097 add_keyboard_wait_descriptor (connection); |
9572 | 6098 #endif |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
6099 |
4147
c6657758fb6f
* xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents:
3951
diff
changeset
|
6100 #ifndef F_SETOWN_BUG |
286 | 6101 #ifdef F_SETOWN |
6102 #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
|
6103 /* stdin is a socket here */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6104 fcntl (connection, 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
|
6105 #else /* ! defined (F_SETOWN_SOCK_NEG) */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6106 fcntl (connection, 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
|
6107 #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
|
6108 #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
|
6109 #endif /* F_SETOWN_BUG */ |
286 | 6110 |
6111 #ifdef SIGIO | |
11994
b4dd8ca308dd
(x_term_init): Call init_sigio only if interrupt_input.
Karl Heuer <kwzh@gnu.org>
parents:
11988
diff
changeset
|
6112 if (interrupt_input) |
b4dd8ca308dd
(x_term_init): Call init_sigio only if interrupt_input.
Karl Heuer <kwzh@gnu.org>
parents:
11988
diff
changeset
|
6113 init_sigio (connection); |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
6114 #endif /* ! defined (SIGIO) */ |
286 | 6115 |
11997
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
6116 UNBLOCK_INPUT; |
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
6117 |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6118 return dpyinfo; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6119 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6120 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6121 /* Get rid of display DPYINFO, assuming all frames are already gone, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6122 and without sending any more commands to the X server. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6123 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6124 void |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6125 x_delete_display (dpyinfo) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6126 struct x_display_info *dpyinfo; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6127 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6128 delete_keyboard_wait_descriptor (dpyinfo->connection); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6129 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6130 /* Discard this display from x_display_name_list and x_display_list. |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6131 We can't use Fdelq because that can quit. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6132 if (! NILP (x_display_name_list) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6133 && EQ (XCONS (x_display_name_list)->car, dpyinfo->name_list_element)) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6134 x_display_name_list = XCONS (x_display_name_list)->cdr; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6135 else |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6136 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6137 Lisp_Object tail; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6138 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6139 tail = x_display_name_list; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6140 while (CONSP (tail) && CONSP (XCONS (tail)->cdr)) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6141 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6142 if (EQ (XCONS (XCONS (tail)->cdr)->car, |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6143 dpyinfo->name_list_element)) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6144 { |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6145 XCONS (tail)->cdr = XCONS (XCONS (tail)->cdr)->cdr; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6146 break; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6147 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6148 tail = XCONS (tail)->cdr; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6149 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6150 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6151 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6152 if (x_display_list == dpyinfo) |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6153 x_display_list = dpyinfo->next; |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6154 else |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6155 { |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6156 struct x_display_info *tail; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6157 |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6158 for (tail = x_display_list; tail; tail = tail->next) |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6159 if (tail->next == dpyinfo) |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6160 tail->next = tail->next->next; |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6161 } |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6162 |
12771
6f07c79d9a05
(x_delete_display) [AIX]: Don't call XRmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
12750
diff
changeset
|
6163 #ifndef USE_X_TOOLKIT /* I'm told Xt does this itself. */ |
6f07c79d9a05
(x_delete_display) [AIX]: Don't call XRmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
12750
diff
changeset
|
6164 #ifndef AIX /* On AIX, XCloseDisplay calls this. */ |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6165 XrmDestroyDatabase (dpyinfo->xrdb); |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6166 #endif |
12771
6f07c79d9a05
(x_delete_display) [AIX]: Don't call XRmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
12750
diff
changeset
|
6167 #endif |
11015 | 6168 #ifdef MULTI_KBOARD |
6169 if (--dpyinfo->kboard->reference_count == 0) | |
11166
0e9fad3ccf03
(x_delete_display): Extract kboard deletion, for modularity.
Karl Heuer <kwzh@gnu.org>
parents:
11162
diff
changeset
|
6170 delete_kboard (dpyinfo->kboard); |
10652
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
6171 #endif |
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
6172 xfree (dpyinfo->font_table); |
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
6173 xfree (dpyinfo->x_id_name); |
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
6174 xfree (dpyinfo); |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6175 } |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6176 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6177 /* Set up use of X before we make the first connection. */ |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6178 |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6179 x_initialize () |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6180 { |
771 | 6181 clear_frame_hook = XTclear_frame; |
286 | 6182 clear_end_of_line_hook = XTclear_end_of_line; |
6183 ins_del_lines_hook = XTins_del_lines; | |
6184 change_line_highlight_hook = XTchange_line_highlight; | |
6185 insert_glyphs_hook = XTinsert_glyphs; | |
6186 write_glyphs_hook = XTwrite_glyphs; | |
6187 delete_glyphs_hook = XTdelete_glyphs; | |
6188 ring_bell_hook = XTring_bell; | |
6189 reset_terminal_modes_hook = XTreset_terminal_modes; | |
6190 set_terminal_modes_hook = XTset_terminal_modes; | |
6191 update_begin_hook = XTupdate_begin; | |
6192 update_end_hook = XTupdate_end; | |
6193 set_terminal_window_hook = XTset_terminal_window; | |
6194 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
|
6195 frame_up_to_date_hook = XTframe_up_to_date; |
286 | 6196 cursor_to_hook = XTcursor_to; |
6197 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
|
6198 mouse_position_hook = XTmouse_position; |
771 | 6199 frame_rehighlight_hook = XTframe_rehighlight; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
6200 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
|
6201 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
|
6202 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
|
6203 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
|
6204 judge_scroll_bars_hook = XTjudge_scroll_bars; |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
6205 |
771 | 6206 scroll_region_ok = 1; /* we'll scroll partial frames */ |
286 | 6207 char_ins_del_ok = 0; /* just as fast to write the line */ |
6208 line_ins_del_ok = 1; /* we'll just blt 'em */ | |
6209 fast_clear_end_of_line = 1; /* X does this well */ | |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
6210 memory_below_frame = 0; /* we don't remember what scrolls |
286 | 6211 off the bottom */ |
6212 baud_rate = 19200; | |
6213 | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6214 x_noop_count = 0; |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6215 |
4476
e7de1b007447
(x_term_init): Set the hooks before we call Fset_input_mode.
Richard M. Stallman <rms@gnu.org>
parents:
4304
diff
changeset
|
6216 /* 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
|
6217 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
|
6218 |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6219 #ifdef USE_X_TOOLKIT |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6220 XtToolkitInitialize (); |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6221 Xt_app_con = XtCreateApplicationContext (); |
12494
bfbe2490dbf0
(x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents:
12431
diff
changeset
|
6222 XtAppSetFallbackResources (Xt_app_con, Xt_default_resources); |
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6223 #endif |
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
6224 |
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
6225 /* Note that there is no real way portable across R3/R4 to get the |
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
6226 original error handler. */ |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6227 XSetErrorHandler (x_error_quitter); |
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6228 XSetIOErrorHandler (x_io_error_quitter); |
286 | 6229 |
6230 /* Disable Window Change signals; they are handled by X events. */ | |
6231 #ifdef SIGWINCH | |
6232 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
|
6233 #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
|
6234 |
10743
6977bff3ff38
(x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents:
10652
diff
changeset
|
6235 signal (SIGPIPE, x_connection_signal); |
286 | 6236 } |
395 | 6237 |
6238 void | |
6239 syms_of_xterm () | |
6240 { | |
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6241 staticpro (&x_display_name_list); |
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6242 x_display_name_list = Qnil; |
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6243 |
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
6244 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
|
6245 last_mouse_scroll_bar = Qnil; |
11807
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
6246 |
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
6247 staticpro (&Qvendor_specific_keysyms); |
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
6248 Qvendor_specific_keysyms = intern ("vendor-specific-keysyms"); |
395 | 6249 } |
14694
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6250 |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6251 /* Avoid warnings or errors from including Xlibint.h. |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6252 We don't need these functions for the rest of this file. */ |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6253 #undef bzero |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6254 #undef bcopy |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6255 #undef bcmp |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6256 #undef min |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6257 #undef max |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6258 |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6259 #ifdef X_CONNECTION_LOCK_FLAG |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6260 #define free loserfree |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6261 #define malloc losermalloc |
14727
78cb76d091af
[X_CONNECTION_LOCK_FLAG] (abort, exit): New definitions.
Richard M. Stallman <rms@gnu.org>
parents:
14694
diff
changeset
|
6262 #define exit loserexit |
78cb76d091af
[X_CONNECTION_LOCK_FLAG] (abort, exit): New definitions.
Richard M. Stallman <rms@gnu.org>
parents:
14694
diff
changeset
|
6263 #define abort loserabort |
14694
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6264 /* For XlibDisplayWriting */ |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6265 #include <X11/Xlibint.h> |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6266 #endif |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6267 |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6268 /* Check whether display connection DPYINFO is hung |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6269 because its thread-interlock is locked. |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6270 If it is, close the connection. |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6271 Do nothing if this system does not have a thread interlock. */ |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6272 |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6273 x_connection_close_if_hung (dpyinfo) |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6274 struct x_display_info *dpyinfo; |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6275 { |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6276 /* This tests (1) whether X_CONNECTION_LOCK_FLAG is defined at all, |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6277 and (2) whether the name it is defined as is itself defined. |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6278 (It ought to have been defined by Xlibint.h. */ |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6279 #if X_CONNECTION_LOCK_FLAG |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6280 |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6281 if (dpyinfo->display->flags & X_CONNECTION_LOCK_FLAG) |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6282 { |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6283 /* If the thread-interlock is locked, assume this connection is dead. |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6284 This assumes that the library does not make other threads |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6285 that can be locking the display legitimately. */ |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6286 |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6287 dpyinfo->display->flags &= ~X_CONNECTION_LOCK_FLAG; |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6288 x_connection_closed (dpyinfo->display, "connection was lost"); |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6289 } |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6290 #endif /* X_CONNECTION_LOCK_FLAG */ |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6291 } |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6292 |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6293 /* Don't put any additional functions here! */ |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6294 |
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
6295 #endif /* not HAVE_X_WINDOWS */ |