annotate src/xterm.c @ 12190:e0abe30899a9

[USE_X_TOOLKIT] (x_window): If using Motif, add some extra to sizes, for consistent behavior.
author Karl Heuer <kwzh@gnu.org>
date Sun, 11 Jun 1995 20:27:39 +0000
parents 09033eb62d7e
children 1b571a7992b0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* X Communication module for terminals which understand the X protocol.
11235
e6bdaaa6ce1b Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 11198
diff changeset
2 Copyright (C) 1989, 1993, 1994, 1995 Free Software Foundation, Inc.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
20 /* 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
21
2977
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
22 /* 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
23 /* 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
24 /* 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
25 #include <signal.h>
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
26
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4683
diff changeset
27 #include <config.h>
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28
7902
22b9aaaf0302 Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7870
diff changeset
29 #include <stdio.h>
22b9aaaf0302 Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7870
diff changeset
30
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
31 /* 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
32 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
33 #include "syssignal.h"
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
34
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 #ifdef HAVE_X_WINDOWS
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 #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
38 #include "blockinput.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 /* This may include sys/types.h, and that somehow loses
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 if this is not done before the other system files. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 #include "xterm.h"
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
43 #include <X11/cursorfont.h>
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
45 #ifndef USG
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 /* Load sys/types.h if not already loaded.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 In some systems loading it twice is suicidal. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 #ifndef makedev
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 #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
50 #endif /* makedev */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
51 #endif /* USG */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 #ifdef BSD
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 #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
55 #endif /* ! defined (BSD) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56
3355
e0c2e8a2ef75 (XTread_socket, case KeyPress) [HPUX]: Test IsModifiedKey.
Richard M. Stallman <rms@gnu.org>
parents: 3284
diff changeset
57 #include "systty.h"
555
e09a318cf838 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 517
diff changeset
58 #include "systime.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
60 #ifndef INCLUDED_FCNTL
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 #include <fcntl.h>
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
62 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 #include <ctype.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 #include <errno.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 #include <setjmp.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 #include <sys/stat.h>
10366
5e8b43cd8e96 Don't include param.h.
Richard M. Stallman <rms@gnu.org>
parents: 10287
diff changeset
67 /* Caused redefinition of DBL_DIG on Netbsd; seems not to be needed. */
5e8b43cd8e96 Don't include param.h.
Richard M. Stallman <rms@gnu.org>
parents: 10287
diff changeset
68 /* #include <sys/param.h> */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
70 #include "frame.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 #include "dispextern.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 #include "termhooks.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 #include "termopts.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 #include "termchar.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 #if 0
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 #include "sink.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 #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
78 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 #include "gnu.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 #include "disptab.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 #include "buffer.h"
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
82 #include "window.h"
8652
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
83 #include "keyboard.h"
8848
48b3ac951c53 Add #include "intervals.h"
Karl Heuer <kwzh@gnu.org>
parents: 8781
diff changeset
84 #include "intervals.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
86 #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
87 extern void free_frame_menubar ();
6941
a914781ef58a (Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents: 6934
diff changeset
88 extern void _XEditResCheckMessages ();
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
89 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
90
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
91 #ifndef USE_X_TOOLKIT
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
92 #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
93 #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
94 #endif
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
95
7602
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
96 #ifdef USE_X_TOOLKIT
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
97 #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
98 #ifndef XtNinitialState
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
99 #define XtNinitialState "initialState"
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
100 #endif
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
101 #endif
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
102
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 #define min(a,b) ((a)<(b) ? (a) : (b))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 #define max(a,b) ((a)>(b) ? (a) : (b))
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
105
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
106 /* 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
107 struct x_display_info *x_display_list;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
109 /* 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
110 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
111 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
112 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
113 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
114
2474
86c8a6e08fd4 Fix typo in comment delimiter.
Richard M. Stallman <rms@gnu.org>
parents: 2468
diff changeset
115 /* 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
116 This is set by update_begin and looked at by all the
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 XT functions. It is zero while not inside an update.
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
118 In that case, the XT functions assume that `selected_frame'
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
119 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
120 extern struct frame *updating_frame;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
121
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
122 /* 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
123 struct frame *pending_autoraise_frame;
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
124
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
125 #ifdef USE_X_TOOLKIT
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
126 /* The application context for Xt use. */
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
127 XtAppContext Xt_app_con;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
128 #endif
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
129
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 /* During an update, maximum vpos for ins/del line operations to affect. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 static int flexlines;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 /* During an update, nonzero if chars output now should be highlighted. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 static int highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 /* Nominal cursor position -- where to draw output.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 During an update, these are different from the cursor-box position. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 static int curs_x;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 static int curs_y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
144 /* Mouse movement.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
145
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
146 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
147 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
148 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
149 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
150 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
151 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
152 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
153 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
154 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
155 is off.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
156
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
157 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
158 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
159 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
160 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
161 the server, which is very important. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
162
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
163 /* 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
164 static FRAME_PTR last_mouse_frame;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
165 static XRectangle last_mouse_glyph;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
166
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
167 /* 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
168
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
169 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
170 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
171 an ordinary motion.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
172
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
173 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
174 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
175 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
176
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
177 /* 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
178 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
179 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
180 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
181 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
182 it's somewhat accurate. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
183 static Time last_mouse_movement_time;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
184
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
185 /* 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
186 #ifdef __STDC__
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
187 static int volatile input_signal_count;
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
188 #else
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
189 static int input_signal_count;
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
190 #endif
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
191
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
192 /* 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
193 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
194
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
195 /* 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
196 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
197 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
198
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
199 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
200
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 /* Tells if a window manager is present or not. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 extern Lisp_Object Vx_no_window_manager;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 /* Nonzero enables some debugging for the X interface code. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 extern int _Xdebug;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207
6941
a914781ef58a (Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents: 6934
diff changeset
208 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
209
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 extern int errno;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
212 /* 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
213 extern int extra_keyboard_modifiers;
338e4ffdb54b (XTread_socket): Support extra_keyboard_modifiers.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
214
11807
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
215 static Lisp_Object Qvendor_specific_keysyms;
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
216
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
217 extern XrmDatabase x_load_resources ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
219 extern Lisp_Object x_icon_type ();
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
220
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
221 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
222
4277
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
223 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
224 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
225 static unsigned int x_x_to_emacs_modifiers ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226
7282
2bc4929691e9 (show_mouse_face): Fix test for cursor in highlighted area.
Karl Heuer <kwzh@gnu.org>
parents: 7264
diff changeset
227 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
228 static void note_mouse_highlight ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
229 static void clear_mouse_face ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
230 static void show_mouse_face ();
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
231 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
232
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
233 static int XTcursor_to ();
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
234 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
235 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
236 void x_catch_errors ();
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
237 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
238
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
239 /* 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
240
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
241 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
242 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
243 Display *dpy;
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
244 {
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
245 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
246
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
247 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
248 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
249 return dpyinfo;
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
250
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
251 return 0;
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
252 }
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
253
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
254 /* 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
255
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
256 These hooks are called by update_frame at the beginning and end
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
257 of a frame update. We record in `updating_frame' the identity
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
258 of the frame being updated, so that the XT... functions do not
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
259 need to take a frame as argument. Most of the XT... functions
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 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
261 being XTcursor_to, XTwrite_glyphs and XTreassert_line_highlight. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 static
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
264 XTupdate_begin (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
265 struct frame *f;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
266 {
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
269 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
272 flexlines = f->height;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 highlight = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 BLOCK_INPUT;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
276
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
277 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
278 {
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
279 /* 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
280 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
281
97fc8c6b4a74 (XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents: 9823
diff changeset
282 /* 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
283 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
284 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
285 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
286
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
287 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
288 {
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
289 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
290 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
291
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
292 /* 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
293 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
294 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
295 break;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
296
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
297 lastline = f->height;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
298 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
299 {
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
300 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
301 break;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
302 else
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
303 lastline = i;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
304 }
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
305
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
306 /* 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
307 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
308 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
309 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
310 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
311 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
312 || 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
313 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
314 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
315 }
8781
98741404d3e0 Delete X11 conditionals.
Richard M. Stallman <rms@gnu.org>
parents: 8724
diff changeset
316
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 static
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
321 XTupdate_end (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
322 struct frame *f;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
323 {
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
328 do_line_dance ();
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
329 x_display_cursor (f, 1);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
330
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
331 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
332 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
333 #if 0
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
334 /* 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
335 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
336 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
337 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
338 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
339 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
340 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
341 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
342 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
343 #endif
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
344
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
345 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
348
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
349 /* 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
350
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
351 static
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
352 XTframe_up_to_date (f)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
353 FRAME_PTR f;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
354 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
355 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
356 || 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
357 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
358 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
359 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
360 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
361 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
362 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
363 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365 /* External interface to control of standout mode.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 Call this when about to modify line at position VPOS
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 and not change whether it is highlighted. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 XTreassert_line_highlight (new, vpos)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 int new, vpos;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 highlight = new;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 /* Call this when about to modify line at position VPOS
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 and change whether it is highlighted. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 XTchange_line_highlight (new_highlight, vpos, first_unused_hpos)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 int new_highlight, vpos, first_unused_hpos;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 highlight = new_highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 XTcursor_to (vpos, 0);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
384 XTclear_end_of_line (updating_frame->width);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 /* This is used when starting Emacs and when restarting after suspend.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 When starting Emacs, no X window is mapped. And nothing must be done
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 to Emacs's own window if it is suspended (though that rarely happens). */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 XTset_terminal_modes ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 /* This is called when exiting or suspending Emacs.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 Exiting will make the X-windows go away, and suspending
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 requires no action. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 XTreset_terminal_modes ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
403 /* XTclear_frame (); */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
406 /* 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
407 This is where display update commands will take effect.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 This does not affect the place where the cursor-box is displayed. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
410 static int
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 XTcursor_to (row, col)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 register int row, col;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 int orow = row;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 curs_x = col;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 curs_y = row;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
420 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 BLOCK_INPUT;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
423 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
424 XFlush (FRAME_X_DISPLAY (selected_frame));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 /* Display a sequence of N glyphs found at GP.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 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
431 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
432 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
433 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
434 don't alter the background.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
436 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
437
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
438 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
439 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
440 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
441 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
442 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
443 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
444
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
445 #if 1
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
446 /* 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
447
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
448 static void
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
449 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
450 struct frame *f;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
451 int left, top;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
452 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
453 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
454 int hl;
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
455 int just_foreground;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
456 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
457 /* Holds characters to be displayed. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
458 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
459 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
460 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
461 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
462 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
463 int orig_left = left;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
464
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
465 while (n > 0)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
466 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
467 /* 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
468 int cf, len;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
469 int g = *gp;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
470
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
471 GLYPH_FOLLOW_ALIASES (tbase, tlen, g);
6413
6eb1a3cf0371 (dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents: 6356
diff changeset
472 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
473
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
474 /* 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
475 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
476 cp = buf;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
477 while (n > 0)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
478 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
479 g = *gp;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
480 GLYPH_FOLLOW_ALIASES (tbase, tlen, g);
6413
6eb1a3cf0371 (dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents: 6356
diff changeset
481 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
482 break;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
483
6413
6eb1a3cf0371 (dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents: 6356
diff changeset
484 *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
485 --n;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
486 ++gp;
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
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
489 /* 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
490 len = cp - buf;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
491
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
492 /* 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
493 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
494 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
495 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
496 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
497 GC gc = FACE_GC (face);
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
498 int stippled = 0;
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
499
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
500 /* 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
501 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
502 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
503
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
504 /* 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
505 if (cf != 0)
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
506 {
5719
d3074ff90741 (dumpglyphs): Don't crash for invalid face code.
Richard M. Stallman <rms@gnu.org>
parents: 5686
diff changeset
507 /* 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
508 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
509 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
510 || 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
511 cf = 0;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
512
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
513 if (cf == 1)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
514 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
515 else
3883
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3839
diff changeset
516 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
517 font = FACE_FONT (face);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
518 gc = FACE_GC (face);
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
519 if (FACE_STIPPLE (face))
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
520 stippled = 1;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
521 }
2785
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
522
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
523 /* 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
524 else if (hl == 0)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
525 ;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
526 else if (hl == 1)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
527 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
528 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
529 font = FACE_FONT (face);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
530 gc = FACE_GC (face);
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
531 if (FACE_STIPPLE (face))
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
532 stippled = 1;
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
533 }
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
534
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
535 #define FACE_DEFAULT (~0)
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
536
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
537 /* 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
538 if (hl == 2)
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
539 {
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
540 /* The cursor overrides stippling. */
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
541 stippled = 0;
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
542
7935
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
543 if ((!face->font
11259
81f5d9eb1484 (dumpglyphs): Cast FACE_DEFAULT to (XFontStruct *)
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
544 || face->font == (XFontStruct *) FACE_DEFAULT
7935
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
545 || face->font == f->display.x->font)
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
546 && face->background == f->display.x->background_pixel
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
547 && face->foreground == f->display.x->foreground_pixel)
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
548 {
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
549 gc = f->display.x->cursor_gc;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
550 }
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
551 /* 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
552 else
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
553 {
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
554 XGCValues xgcv;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
555 unsigned long mask;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
556
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
557 xgcv.background = f->display.x->cursor_pixel;
7935
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
558 xgcv.foreground = face->background;
5987
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
559 /* If the glyph would be invisible,
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
560 try a different foreground. */
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
561 if (xgcv.foreground == xgcv.background)
7469
24b292242269 (dumpglyphs): For cursor foreground, try the
Richard M. Stallman <rms@gnu.org>
parents: 7415
diff changeset
562 xgcv.foreground = face->foreground;
5987
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
563 if (xgcv.foreground == xgcv.background)
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
564 xgcv.foreground = f->display.x->cursor_foreground_pixel;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
565 if (xgcv.foreground == xgcv.background)
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
566 xgcv.foreground = face->foreground;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
567 /* 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
568 if (xgcv.background == face->background
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
569 && xgcv.foreground == face->foreground)
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
570 {
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
571 xgcv.background = face->foreground;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
572 xgcv.foreground = face->background;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
573 }
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
574 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
575 xgcv.graphics_exposures = 0;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
576 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
577 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
578 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
579 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
580 mask, &xgcv);
7935
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
581 else
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
582 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
583 = 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
584 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
585 #if 0
7935
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
586 /* 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
587 if necessary. */
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
588 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
589 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
590 #endif
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
591 }
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
592 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
593
11259
81f5d9eb1484 (dumpglyphs): Cast FACE_DEFAULT to (XFontStruct *)
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
594 if (font == (XFontStruct *) FACE_DEFAULT)
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
595 font = f->display.x->font;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
596
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
597 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
598 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
599 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
600 else
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
601 {
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
602 if (stippled)
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
603 {
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
604 /* Turn stipple on. */
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
605 XSetFillStyle (FRAME_X_DISPLAY (f), gc, FillOpaqueStippled);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
606
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
607 /* 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
608 XFillRectangle (FRAME_X_DISPLAY (f), window, gc,
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
609 left, top,
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
610 FONT_WIDTH (font) * len,
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
611 FONT_HEIGHT (font));
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
612
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
613 /* Turn stipple off. */
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
614 XSetFillStyle (FRAME_X_DISPLAY (f), gc, FillSolid);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
615
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
616 /* 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
617 XDrawString (FRAME_X_DISPLAY (f), window, gc,
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
618 left, top + FONT_BASE (font), buf, len);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
619 }
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
620 else
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
621 XDrawImageString (FRAME_X_DISPLAY (f), window, gc,
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
622 left, top + FONT_BASE (font), buf, len);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
623
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
624 /* Clear the rest of the line's height. */
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
625 if (f->display.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
626 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
627 top + FONT_HEIGHT (font),
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
628 FONT_WIDTH (font) * len,
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
629 /* 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
630 we have to clear. */
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
631 f->display.x->line_height - FONT_HEIGHT (font),
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
632 False);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
633 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
634
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
635 #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
636 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
637 if (!just_foreground)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
638 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
639 if (left == orig_left)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
640 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
641 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
642 if (n == 0)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
643 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
644 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
645 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
646 #endif
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
647
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
648 /* 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
649 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
650 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
651 {
2785
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
652 int underline_position = 1;
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
653
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
654 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
655 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
656
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
657 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
658 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
659 FACE_GC (face),
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
660 left, (top
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
661 + FONT_BASE (font)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
662 + underline_position),
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
663 len * FONT_WIDTH (font), 1);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
664 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
665
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
666 left += len * FONT_WIDTH (font);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
667 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
668 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
669 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
670 #endif /* 1 */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
671
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
672 #if 0
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
673 /* This is the old single-face code. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
674
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
675 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
676 dumpglyphs (f, left, top, gp, n, hl, font)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
677 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
678 int left, top;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
679 register GLYPH *gp; /* Points to first GLYPH. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680 register int n; /* Number of glyphs to display. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
681 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
682 XFontStruct *font;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
683 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684 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
685 Window window = FRAME_X_WINDOW (f);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
686 GC drawing_gc = (hl == 2 ? f->display.x->cursor_gc
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
687 : (hl ? f->display.x->reverse_gc
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
688 : f->display.x->normal_gc));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
689
313
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
690 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
691 XDrawImageString16 (FRAME_X_DISPLAY (f), window, drawing_gc,
313
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
692 left, top + FONT_BASE (font), (XChar2b *) gp, n);
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
693 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
694 XDrawImageString (FRAME_X_DISPLAY (f), window, drawing_gc,
313
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
695 left, top + FONT_BASE (font), (char *) gp, n);
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
696 else
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
697 /* What size of glyph ARE you using? And does X have a function to
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
698 draw them? */
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
699 abort ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 }
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
701 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
703 /* 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
704 Advance the cursor over the text.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705 Output LEN glyphs at START.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707 `highlight', set up by XTreassert_line_highlight or XTchange_line_highlight,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708 controls the pixel values used for foreground and background. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
711 XTwrite_glyphs (start, len)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
712 register GLYPH *start;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713 int len;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715 register int temp_length;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716 int mask;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
717 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
721 do_line_dance ();
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
722 f = updating_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
723 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
725 f = selected_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 /* If not within an update,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
727 output at the frame's visible cursor. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
728 curs_x = f->cursor_x;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
729 curs_y = f->cursor_y;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
732 dumpglyphs (f,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
733 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
734 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
735 start, len, highlight, 0);
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
736
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
737 /* If we drew on top of the cursor, note that it is turned off. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
738 if (curs_y == f->phys_cursor_y
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
739 && curs_x <= f->phys_cursor_x
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
740 && curs_x + len > f->phys_cursor_x)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
741 f->phys_cursor_x = -1;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
742
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
743 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
745 f->cursor_x += len;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
746 x_display_cursor (f, 1);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
747 f->cursor_x -= len;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 curs_x += len;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
755 /* 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
756 Erase the current text line from the nominal cursor position (inclusive)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757 to column FIRST_UNUSED (exclusive). The idea is that everything
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758 from FIRST_UNUSED onward is already erased. */
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
759
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
760 static
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
761 XTclear_end_of_line (first_unused)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
762 register int first_unused;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
764 struct frame *f = updating_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
767 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
770 if (curs_y < 0 || curs_y >= f->height)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 if (first_unused <= 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
775 if (first_unused >= f->width)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
776 first_unused = f->width;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779
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
780 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
781
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
782 /* Notice if the cursor will be cleared by this operation. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
783 if (curs_y == f->phys_cursor_y
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
784 && curs_x <= f->phys_cursor_x
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
785 && f->phys_cursor_x < first_unused)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
786 f->phys_cursor_x = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
788 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
789 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
790 CHAR_TO_PIXEL_ROW (f, curs_y),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
791 FONT_WIDTH (f->display.x->font) * (first_unused - curs_x),
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
792 f->display.x->line_height, False);
4277
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
793 #if 0
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
794 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
795 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
796
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
797 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
798 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
800 static
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
801 XTclear_frame ()
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 int mask;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
804 struct frame *f = updating_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
805
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
806 if (f == 0)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
807 f = selected_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
808
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
809 f->phys_cursor_x = -1; /* Cursor not visible. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
810 curs_x = 0; /* Nominal cursor position is top left. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
811 curs_y = 0;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
812
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
813 BLOCK_INPUT;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
814
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
815 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
816
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
817 /* 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
818 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
819 x_scroll_bar_clear (f);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
820
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
821 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
823 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
824
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
825 #if 0
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
826 /* 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
827 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
828
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
829 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
830 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
831 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
832 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
833
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
834 /* 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
835 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
836 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
837 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
838 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
839
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
840 static void
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
841 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
842 FRAME_PTR f;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
843 int x, y;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
844 int highlight_flag;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
845 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
846 /* 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
847 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
848 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
849 (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
850 if (x > 0)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
851 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
852 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
853 if (start_x < 0)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
854 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
855 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
856 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
857 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
858 FONT_WIDTH (f->display.x->font),
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
859 f->display.x->line_height, False);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
860
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
861 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
862 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
863 &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
864 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
865 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
866 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
867
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
868 /* 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
869 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
870 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
871 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
872 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
873
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
874 static void
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
875 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
876 FRAME_PTR f;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
877 int x, y;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
878 int highlight_flag;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
879 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
880 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
881 /* 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
882 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
883 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
884 (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
885 if (x < limit
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
886 && 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
887 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
888 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
889 if (end_x > limit)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
890 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
891 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
892 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
893 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
894 FONT_WIDTH (f->display.x->font),
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
895 f->display.x->line_height, False);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
896
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
897 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
898 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
899 &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
900 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
901 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
902 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
903 #endif /* 0 */
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
904
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
905 #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
906
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
907 /* 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
908
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
909 static int
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
910 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
911 XFontStruct *font;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
912 int c;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
913 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
914 XCharStruct *s;
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 /* 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
917 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
918 s = &font->max_bounds;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
919 else
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
920 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
921 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
922 int row, within;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
923
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
924 /* 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
925 row = c >> 8;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
926 within = c & 0177;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
927 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
928 && 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
929 && row >= font->min_byte1
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
930 && row <= font->max_byte1))
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
931 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
932 /* 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
933 c = font->default_char;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
934 row = c >> (INTBITS - 8);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
935 within = c & 0177;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
936 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
937 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
938 && 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
939 && row >= font->min_byte1
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
940 && row <= font->max_byte1))
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
941 /* 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
942 return 0;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
943 else
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
944 /* 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
945 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
946 + row * rowlen);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
947 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
948
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
949 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
950 }
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 /* 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
953
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
954 static int
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
955 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
956 XFontStruct *font;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
957 int c;
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 XCharStruct *s;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
960
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
961 /* 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
962 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
963 s = &font->max_bounds;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
964 else
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 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
967 int row, within;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
968
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
969 /* 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
970 row = c >> 8;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
971 within = c & 0177;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
972 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
973 && 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
974 && row >= font->min_byte1
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
975 && row <= font->max_byte1))
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
976 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
977 /* 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
978 c = font->default_char;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
979 row = c >> (INTBITS - 8);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
980 within = c & 0177;
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 (!(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
983 && 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
984 && row >= font->min_byte1
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
985 && row <= font->max_byte1))
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
986 /* 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
987 return 0;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
988 else
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
989 /* 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
990 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
991 + row * rowlen);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
992 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
993
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
994 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
995 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
996 #endif /* 0 */
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
997
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
998 /* 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
999
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1000 /* 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
1001 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
1002 #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1003
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1004 /* Subtract the `struct timeval' values X and Y,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1005 storing the result in RESULT.
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1006 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
1007
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1008 static int
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1009 timeval_subtract (result, x, y)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1010 struct timeval *result, x, y;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1011 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1012 /* 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
1013 This is safer because on some systems
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1014 the tv_sec member is unsigned. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1015 if (x.tv_usec < y.tv_usec)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1016 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1017 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
1018 y.tv_usec -= 1000000 * nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1019 y.tv_sec += nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1020 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1021 if (x.tv_usec - y.tv_usec > 1000000)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1022 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1023 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
1024 y.tv_usec += 1000000 * nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1025 y.tv_sec -= nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1026 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1027
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1028 /* 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
1029 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
1030 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
1031
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1032 /* 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
1033 return x.tv_sec < y.tv_sec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1034 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1035
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1036 XTflash (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1037 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1038 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1039 BLOCK_INPUT;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1040
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1041 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1042 GC gc;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1043
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1044 /* 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
1045 into background pixels. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1046 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1047 XGCValues values;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1048
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1049 values.function = GXxor;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1050 values.foreground = (f->display.x->foreground_pixel
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1051 ^ f->display.x->background_pixel);
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1052
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1053 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
1054 GCFunction | GCForeground, &values);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1055 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1056
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 int width = PIXEL_WIDTH (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1059 int height = PIXEL_HEIGHT (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1060
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1061 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
1062 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
1063 XFlush (FRAME_X_DISPLAY (f));
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1064
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1065 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1066 struct timeval wakeup, now;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1067
5362
d1fa597d923d (XTflush): FIx typo in last change.
Richard M. Stallman <rms@gnu.org>
parents: 5357
diff changeset
1068 EMACS_GET_TIME (wakeup);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1069
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1070 /* 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
1071 wakeup.tv_usec += 150000;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1072 wakeup.tv_sec += (wakeup.tv_usec / 1000000);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1073 wakeup.tv_usec %= 1000000;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1074
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1075 /* Keep waiting until past the time wakeup. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1076 while (1)
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 struct timeval timeout;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1079
5362
d1fa597d923d (XTflush): FIx typo in last change.
Richard M. Stallman <rms@gnu.org>
parents: 5357
diff changeset
1080 EMACS_GET_TIME (timeout);
1821
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 /* In effect, timeout = wakeup - timeout.
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1083 Break if result would be negative. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1084 if (timeval_subtract (&timeout, wakeup, timeout))
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1085 break;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1086
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1087 /* 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
1088 select (0, NULL, NULL, NULL, &timeout);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1089 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1090 }
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1091
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1092 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
1093 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
1094 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
1095 XFlush (FRAME_X_DISPLAY (f));
1821
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 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1098
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1099 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1100 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1101
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1102 #endif
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1103
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1104
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1105 /* Make audible bell. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1106
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1107 #define XRINGBELL XBell (FRAME_X_DISPLAY (selected_frame), 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1108
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1109 XTring_bell ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
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 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
1112 return;
48d20a0b229a (XTring_bell): Do nothing if x_current_connection is 0.
Richard M. Stallman <rms@gnu.org>
parents: 3218
diff changeset
1113
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1114 #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1115 if (visible_bell)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1116 XTflash (selected_frame);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1117 else
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1118 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1119 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1120 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1121 XRINGBELL;
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1122 XFlush (FRAME_X_DISPLAY (selected_frame));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1123 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1124 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1125 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1126
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1127 /* Insert and delete character.
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1128 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
1129 off the feature of using them. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1130
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1131 static
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1132 XTinsert_glyphs (start, len)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1133 register char *start;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1134 register int len;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1135 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1136 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1138
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1139 static
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1140 XTdelete_glyphs (n)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1141 register int n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1142 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1143 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1144 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1145
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1146 /* Specify how many text lines, from the top of the window,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1147 should be affected by insert-lines and delete-lines operations.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1148 This, and those operations, are used only within an update
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1149 that is bounded by calls to XTupdate_begin and XTupdate_end. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1150
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1151 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1152 XTset_terminal_window (n)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1153 register int n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1154 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1155 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1156 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1157
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1158 if ((n <= 0) || (n > updating_frame->height))
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1159 flexlines = updating_frame->height;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1160 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1161 flexlines = n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1162 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1163
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
1164 /* 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
1165 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
1166 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
1167 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
1168
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1169 /* Array of line numbers from cached insert/delete operations.
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1170 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
1171 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
1172 static int *line_dance;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1173
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1174 /* Allocated length of that array. */
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1175 static int line_dance_len;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1176
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1177 /* Flag indicating whether we've done any work. */
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1178 static int line_dance_in_progress;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1179
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1180 /* Perform an insert-lines or delete-lines operation,
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1181 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
1182 XTins_del_lines (vpos, n)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1183 int vpos, n;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1184 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1185 register int fence, i;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1186
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1187 if (vpos >= flexlines)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1188 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1189
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1190 if (!line_dance_in_progress)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1191 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1192 int ht = updating_frame->height;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1193 if (ht > line_dance_len)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1194 {
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1195 line_dance = (int *)xrealloc (line_dance, ht * sizeof (int));
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1196 line_dance_len = ht;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1197 }
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1198 for (i = 0; i < ht; ++i) line_dance[i] = i;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1199 line_dance_in_progress = 1;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1200 }
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1201 if (n >= 0)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1202 {
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1203 if (n > flexlines - vpos)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1204 n = flexlines - vpos;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1205 fence = vpos + n;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1206 for (i = flexlines; --i >= fence;)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1207 line_dance[i] = line_dance[i-n];
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1208 for (i = fence; --i >= vpos;)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1209 line_dance[i] = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1210 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1211 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1212 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1213 n = -n;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1214 if (n > flexlines - vpos)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1215 n = flexlines - vpos;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1216 fence = flexlines - n;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1217 for (i = vpos; i < fence; ++i)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1218 line_dance[i] = line_dance[i + n];
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1219 for (i = fence; i < flexlines; ++i)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1220 line_dance[i] = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1221 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1222 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1223
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1224 /* Here's where we actually move the pixels around.
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1225 Must be called with input blocked. */
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1226 static void
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1227 do_line_dance ()
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1228 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1229 register int i, j, distance;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1230 register struct frame *f;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1231 int ht;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1232 int intborder;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1233
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1234 /* 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
1235 array uninitialized, but we might not even have a frame. */
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1236 if (!line_dance_in_progress)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1237 return;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1238
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1239 f = updating_frame;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1240 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1241 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1242
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1243 ht = f->height;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1244 intborder = f->display.x->internal_border_width;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1245
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1246 x_display_cursor (updating_frame, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1247
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1248 for (i = 0; i < ht; ++i)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1249 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
1250 {
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1251 for (j = i; (j < ht && line_dance[j] != -1
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1252 && line_dance[j]-j == distance); ++j);
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1253 /* 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
1254 XCopyArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1255 FRAME_X_WINDOW (f), f->display.x->normal_gc,
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1256 intborder, CHAR_TO_PIXEL_ROW (f, i+distance),
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1257 f->width * FONT_WIDTH (f->display.x->font),
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1258 (j-i) * f->display.x->line_height,
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1259 intborder, CHAR_TO_PIXEL_ROW (f, i));
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1260 i = j-1;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1261 }
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1262
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1263 for (i = ht; --i >=0; )
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1264 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
1265 {
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1266 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
1267 && line_dance[j]-j == distance););
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1268 /* 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
1269 XCopyArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1270 FRAME_X_WINDOW (f), f->display.x->normal_gc,
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1271 intborder, CHAR_TO_PIXEL_ROW (f, j+1+distance),
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1272 f->width * FONT_WIDTH (f->display.x->font),
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1273 (i-j) * f->display.x->line_height,
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1274 intborder, CHAR_TO_PIXEL_ROW (f, j+1));
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1275 i = j+1;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1276 }
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1277
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1278 for (i = 0; i < ht; ++i)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1279 if (line_dance[i] == -1)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1280 {
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1281 for (j = i; j < ht && line_dance[j] == -1; ++j);
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1282 /* 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
1283 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1284 intborder, CHAR_TO_PIXEL_ROW (f, i),
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1285 f->width * FONT_WIDTH (f->display.x->font),
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1286 (j-i) * f->display.x->line_height, False);
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1287 i = j-1;
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 line_dance_in_progress = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1290 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1291
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1292 /* Support routines for exposure events. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1293 static void clear_cursor ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1294
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1295 /* Output into a rectangle of an X-window (for frame F)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1296 the characters in f->phys_lines that overlap that rectangle.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1297 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
1298 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
1299 Call this function with input blocked. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1300
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1301 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1302 dumprectangle (f, left, top, cols, rows)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1303 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1304 register int left, top, cols, rows;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1305 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1306 register struct frame_glyphs *active_frame = FRAME_CURRENT_GLYPHS (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1307 int cursor_cleared = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1308 int bottom, right;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1309 register int y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1310
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1311 if (FRAME_GARBAGED_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1312 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1313
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1314 /* Express rectangle as four edges, instead of position-and-size. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1315 bottom = top + rows;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1316 right = left + cols;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1317
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1318 /* Convert rectangle edges in pixels to edges in chars.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1319 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
1320 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
1321 left = PIXEL_TO_CHAR_COL (f, left);
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
1322 bottom += (f->display.x->line_height - 1);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1323 right += (FONT_WIDTH (f->display.x->font) - 1);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1324 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
1325 right = PIXEL_TO_CHAR_COL (f, right);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1327 /* Clip the rectangle to what can be visible. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328 if (left < 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1329 left = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330 if (top < 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1331 top = 0;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1332 if (right > f->width)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1333 right = f->width;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1334 if (bottom > f->height)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1335 bottom = f->height;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1336
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1337 /* Get size in chars of the rectangle. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1338 cols = right - left;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 rows = bottom - top;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1340
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 /* If rectangle has zero area, return. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1342 if (rows <= 0) return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343 if (cols <= 0) return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1344
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1345 /* Turn off the cursor if it is in the rectangle.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1346 We will turn it back on afterward. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1347 if ((f->phys_cursor_x >= left) && (f->phys_cursor_x < right)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1348 && (f->phys_cursor_y >= top) && (f->phys_cursor_y < bottom))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1349 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1350 clear_cursor (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1351 cursor_cleared = 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1352 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1353
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1354 /* Display the text in the rectangle, one text line at a time. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1355
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356 for (y = top; y < bottom; y++)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1358 GLYPH *line = &active_frame->glyphs[y][left];
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1359
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1360 if (! active_frame->enable[y] || left > active_frame->used[y])
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1361 continue;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1362
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1363 dumpglyphs (f,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1364 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
1365 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
1366 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
1367 active_frame->highlight[y], 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1368 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1369
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1370 /* Turn the cursor on if we turned it off. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1371
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1372 if (cursor_cleared)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1373 x_display_cursor (f, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1374 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1375
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1376 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
1377 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
1378 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1379 {
3943
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1380 /* 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
1381 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
1382 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
1383 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
1384 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
1385 XSetWindowBorder (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
1386 f->display.x->border_pixel);
3943
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1387 UNBLOCK_INPUT;
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1388 x_display_cursor (f, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1389 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1390
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1391 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
1392 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
1393 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1394 {
3943
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1395 /* 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
1396 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
1397 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
1398 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
1399 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
1400 XSetWindowBorderPixmap (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
1401 f->display.x->border_tile);
3943
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1402 UNBLOCK_INPUT;
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1403 x_display_cursor (f, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1404 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1405
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1406 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
1407 static void x_frame_rehighlight ();
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1408
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1409 /* The focus has changed. Update the frames as necessary to reflect
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1410 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
1411 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
1412 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
1413 Lisp code can tell when the switch took place by examining the events. */
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1414
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1415 static void
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1416 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
1417 struct x_display_info *dpyinfo;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1418 struct frame *frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1419 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1420 struct frame *old_focus = dpyinfo->x_focus_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1421 int events_enqueued = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1422
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1423 if (frame != dpyinfo->x_focus_frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1424 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1425 /* Set this before calling other routines, so that they see
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1426 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
1427 dpyinfo->x_focus_frame = frame;
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1428
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1429 if (old_focus && old_focus->auto_lower)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1430 x_lower_frame (old_focus);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1431
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1432 #if 0
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1433 selected_frame = frame;
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
1434 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
1435 selected_frame);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1436 Fselect_window (selected_frame->selected_window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1437 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
1438 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1439
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1440 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
1441 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
1442 else
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
1443 pending_autoraise_frame = 0;
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1444 }
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1445
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1446 x_frame_rehighlight (dpyinfo);
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1447 }
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1448
10223
97fc8c6b4a74 (XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents: 9823
diff changeset
1449 /* 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
1450
97fc8c6b4a74 (XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents: 9823
diff changeset
1451 void
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1452 x_mouse_leave (dpyinfo)
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1453 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
1454 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1455 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
1456 }
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1457
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1458 /* 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
1459 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
1460 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
1461
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1462 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
1463 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
1464 the appropriate X display info. */
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
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 XTframe_rehighlight (frame)
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1467 struct frame *frame;
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1468 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1469 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
1470 }
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1471
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1472 static void
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1473 x_frame_rehighlight (dpyinfo)
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1474 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
1475 {
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1476 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
1477
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1478 if (dpyinfo->x_focus_frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1479 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1480 dpyinfo->x_highlight_frame
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1481 = ((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
1482 ? 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
1483 : dpyinfo->x_focus_frame);
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1484 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
1485 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1486 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
1487 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
1488 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1489 }
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1490 else
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1491 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
1492
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1493 if (dpyinfo->x_highlight_frame != old_highlight)
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1494 {
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1495 if (old_highlight)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1496 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
1497 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
1498 frame_highlight (dpyinfo->x_highlight_frame);
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1499 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1500 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1501
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1502 /* Keyboard processing - modifier keys, vendor-specific keysyms, etc. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1503
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1504 /* 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
1505 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
1506 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
1507 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
1508 {
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1509 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
1510 KeySym *syms;
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1511 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
1512 XModifierKeymap *mods;
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1513
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1514 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
1515 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
1516 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
1517 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
1518 dpyinfo->hyper_mod_mask = 0;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1519
2127
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1520 #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
1521 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
1522 #else
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1523 min_code = display->min_keycode;
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1524 max_code = display->max_keycode;
2127
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1525 #endif
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1526
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1527 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
1528 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
1529 &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
1530 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
1531
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1532 /* 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
1533 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
1534 {
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1535 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
1536
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1537 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
1538 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
1539 {
10287
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
1540 KeyCode code
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
1541 = 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
1542
6560
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1543 /* Zeroes are used for filler. Skip them. */
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1544 if (code == 0)
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1545 continue;
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1546
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1547 /* 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
1548 {
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1549 int code_col;
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1550
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1551 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
1552 {
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1553 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
1554
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1555 switch (sym)
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1556 {
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1557 case XK_Meta_L:
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1558 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
1559 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
1560 break;
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1561
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1562 case XK_Alt_L:
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1563 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
1564 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
1565 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
1566
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
1567 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
1568 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
1569 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
1570 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
1571
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
1572 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
1573 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
1574 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
1575 break;
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1576
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1577 case XK_Shift_Lock:
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1578 /* 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
1579 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
1580 dpyinfo->shift_lock_mask = LockMask;
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1581 break;
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1582 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1583 }
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 }
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
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1588 /* 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
1589 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
1590 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1591 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
1592 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
1593 }
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1594
2923
c8997402dd6b (x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents: 2882
diff changeset
1595 /* 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
1596 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
1597 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
1598 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1599 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
1600 }
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1601
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1602 XFree ((char *) syms);
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1603 XFreeModifiermap (mods);
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1604 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1605
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1606 /* 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
1607 Emacs uses. */
1530
a7f8a1fe258e * xterm.c (x_convert_modifiers): Declare this to return an
Jim Blandy <jimb@redhat.com>
parents: 1436
diff changeset
1608 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
1609 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
1610 struct x_display_info *dpyinfo;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1611 unsigned int state;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1612 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1613 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
1614 | ((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
1615 | ((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
1616 | ((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
1617 | ((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
1618 | ((state & dpyinfo->hyper_mod_mask) ? hyper_modifier : 0));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1619 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1620
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1621 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
1622 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
1623 struct x_display_info *dpyinfo;
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1624 unsigned int state;
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1625 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1626 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
1627 | ((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
1628 | ((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
1629 | ((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
1630 | ((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
1631 | ((state & meta_modifier) ? dpyinfo->meta_mod_mask : 0));
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1632 }
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1633
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1634 /* Convert a keysym to its name. */
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1635
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1636 char *
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1637 x_get_keysym_name (keysym)
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1638 KeySym keysym;
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1639 {
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1640 char *value;
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1641
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1642 BLOCK_INPUT;
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1643 value = XKeysymToString (keysym);
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1644 UNBLOCK_INPUT;
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1645
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1646 return value;
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1647 }
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1648
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1649 /* Mouse clicks and mouse movement. Rah. */
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1650
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1651 /* 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
1652 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
1653 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
1654 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
1655
6023
67aa546e4ff1 (construct_menu_click): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6022
diff changeset
1656 void
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1657 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
1658 FRAME_PTR f;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1659 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
1660 register int *x, *y;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1661 XRectangle *bounds;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1662 int noclip;
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1663 {
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1664 /* 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
1665 even for negative values. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1666 if (pix_x < 0)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1667 pix_x -= FONT_WIDTH ((f)->display.x->font) - 1;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1668 if (pix_y < 0)
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
1669 pix_y -= (f)->display.x->line_height - 1;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1670
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1671 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
1672 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
1673
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1674 if (bounds)
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1675 {
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1676 bounds->width = FONT_WIDTH (f->display.x->font);
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
1677 bounds->height = f->display.x->line_height;
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1678 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
1679 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
1680 }
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1681
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1682 if (!noclip)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1683 {
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1684 if (pix_x < 0)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1685 pix_x = 0;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1686 else if (pix_x > f->width)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1687 pix_x = f->width;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1688
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1689 if (pix_y < 0)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1690 pix_y = 0;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1691 else if (pix_y > f->height)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1692 pix_y = f->height;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1693 }
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1694
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1695 *x = pix_x;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1696 *y = pix_y;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1697 }
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1698
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1699 void
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1700 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
1701 FRAME_PTR f;
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1702 register int x, y;
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1703 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
1704 {
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1705 *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
1706 *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
1707 }
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1708
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1709 /* Prepare a mouse-event in *RESULT for placement in the input queue.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1710
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1711 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
1712 the mouse. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1713
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1714 static Lisp_Object
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1715 construct_mouse_click (result, event, f)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1716 struct input_event *result;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1717 XButtonEvent *event;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1718 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1719 {
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1720 /* Make the event type no_event; we'll change that when we decide
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1721 otherwise. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1722 result->kind = mouse_click;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1723 result->code = event->button - Button1;
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
1724 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
1725 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
1726 event->state)
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1727 | (event->type == ButtonRelease
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1728 ? up_modifier
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1729 : down_modifier));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1730
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1731 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1732 int row, column;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1733
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1734 #if 0
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1735 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
1736 XSETFASTINT (result->x, column);
97cfba406b7b (construct_mouse_click): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9338
diff changeset
1737 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
1738 #endif
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
1739 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
1740 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
1741 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
1742 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1743 }
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1744
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1745 /* 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
1746
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1747 static Lisp_Object
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1748 construct_menu_click (result, event, f)
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1749 struct input_event *result;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1750 XButtonEvent *event;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1751 struct frame *f;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1752 {
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1753 /* 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
1754 otherwise. */
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1755 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
1756 XSETINT (result->code, event->button - Button1);
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1757 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
1758 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
1759 event->state)
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1760 | (event->type == ButtonRelease
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1761 ? up_modifier
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1762 : down_modifier));
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1763
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
1764 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
1765 XSETINT (result->y, -1);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
1766 XSETFRAME (result->frame_or_window, f);
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1767 }
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1768
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1769 /* Function to report a mouse movement to the mainstream Emacs code.
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1770 The input handler calls this.
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1771
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1772 We have received a mouse movement event, which is given in *event.
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1773 If the mouse is over a different glyph than it was last time, tell
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1774 the mainstream emacs code by setting mouse_moved. If not, ask for
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1775 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
1776
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1777 static void
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1778 note_mouse_movement (frame, event)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1779 FRAME_PTR frame;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1780 XMotionEvent *event;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1781 {
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 727
diff changeset
1782 last_mouse_movement_time = event->time;
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 727
diff changeset
1783
7680
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1784 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
1785 {
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1786 mouse_moved = 1;
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1787 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
1788
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1789 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
1790
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1791 /* 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
1792 {
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1793 int dummy;
8279
4cde734c20e8 (note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents: 8164
diff changeset
1794 Window dummy_window;
7680
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1795
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1796 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
1797 &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
1798 &dummy, &dummy, &dummy, &dummy,
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1799 (unsigned int *) &dummy);
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1800 }
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1801 }
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1802
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1803 /* 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
1804 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
1805 || 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
1806 || 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
1807 || 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
1808 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1809 mouse_moved = 1;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
1810 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
1811
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1812 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
1813
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1814 /* 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
1815 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1816 int dummy;
8279
4cde734c20e8 (note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents: 8164
diff changeset
1817 Window dummy_window;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1818
7680
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1819 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
1820 &dummy_window, &dummy_window,
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1821 &dummy, &dummy, &dummy, &dummy,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1822 (unsigned int *) &dummy);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1823 }
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1824 }
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1825 else
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1826 {
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1827 /* It's on the same glyph. Call XQueryPointer so we'll get an
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1828 event the next time the mouse moves and we can see if it's
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1829 *still* on the same glyph. */
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1830 int dummy;
8279
4cde734c20e8 (note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents: 8164
diff changeset
1831 Window dummy_window;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1832
7680
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1833 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
1834 &dummy_window, &dummy_window,
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1835 &dummy, &dummy, &dummy, &dummy,
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1836 (unsigned int *) &dummy);
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1837 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1838 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1839
6644
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
1840 /* 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
1841 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
1842
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1843 /* 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
1844 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
1845 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
1846 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
1847
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1848 static void
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1849 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
1850 FRAME_PTR f;
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
1851 int x, y;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1852 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1853 int row, column, portion;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1854 XRectangle new_glyph;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1855 Lisp_Object window;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1856 struct window *w;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1857
6644
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
1858 if (disable_mouse_highlight)
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
1859 return;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
1860
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
1861 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
1862 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
1863 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
1864
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
1865 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
1866 return;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1867
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
1868 if (gc_in_progress)
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
1869 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
1870 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
1871 return;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
1872 }
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
1873
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1874 /* 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
1875 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
1876 &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
1877
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1878 /* Which window is that in? */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1879 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
1880 w = XWINDOW (window);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1881
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1882 /* 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
1883 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
1884 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
1885
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1886 /* 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
1887 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
1888 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
1889 && 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
1890 && 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
1891 && 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
1892 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1893 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
1894 int i, pos;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1895
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1896 /* 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
1897 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
1898 if (ptr[i] > 0)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1899 break;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1900 pos = ptr[i];
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1901 /* 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
1902 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
1903 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
1904 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
1905 && 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
1906 && 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
1907 && (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
1908 || 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
1909 && (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
1910 || 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
1911 || 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
1912 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1913 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
1914 Lisp_Object *overlay_vec;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1915 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
1916 struct buffer *obuf;
6683
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1917 int obegv, ozv;
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1918
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1919 /* 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
1920 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
1921 return;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1922
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1923 /* 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
1924 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
1925 obuf = current_buffer;
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1926 current_buffer = XBUFFER (w->buffer);
6683
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1927 obegv = BEGV;
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1928 ozv = ZV;
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1929 BEGV = BEG;
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1930 ZV = Z;
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1931
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1932 /* 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
1933 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
1934
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1935 /* 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
1936 XSETINT (position, pos);
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1937
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1938 len = 10;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1939 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
1940
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1941 /* 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
1942 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
1943 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
1944 NULL, NULL);
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1945 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
1946
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1947 /* 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
1948 overlay = Qnil;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1949 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
1950 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1951 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
1952 if (!NILP (mouse_face))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1953 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1954 overlay = overlay_vec[i];
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1955 break;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1956 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1957 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1958 free (overlay_vec);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1959 /* 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
1960 if (NILP (overlay))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1961 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
1962
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1963 /* Handle the overlay case. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1964 if (! NILP (overlay))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1965 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1966 /* 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
1967 should be active. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1968 Lisp_Object before, after;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1969 int ignore;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1970
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1971 before = Foverlay_start (overlay);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1972 after = Foverlay_end (overlay);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1973 /* 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
1974 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
1975 &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
1976 &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
1977 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
1978 = !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
1979 &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
1980 &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
1981 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
1982 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
1983 = 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
1984 &ignore, pos + 1, 1);
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1985
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1986 /* 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
1987 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
1988 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1989 /* Handle the text property case. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1990 else if (! NILP (mouse_face))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1991 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1992 /* 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
1993 should be active. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1994 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
1995 int ignore;
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 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
1998 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
1999 - 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
2000 before
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2001 = 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
2002 Qmouse_face,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2003 w->buffer, beginning);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2004 after
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2005 = 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
2006 w->buffer, end);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2007 /* 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
2008 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
2009 &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
2010 &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
2011 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
2012 = !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
2013 &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
2014 &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
2015 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
2016 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
2017 = compute_char_face (f, w, pos, 0, 0,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2018 &ignore, pos + 1, 1);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2019
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2020 /* Display it as active. */
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2021 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
2022 }
6683
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
2023 BEGV = obegv;
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
2024 ZV = ozv;
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
2025 current_buffer = obuf;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2026 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2027 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2028 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2029
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2030 /* 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
2031 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
2032 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
2033 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
2034 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
2035 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
2036
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
2037 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
2038
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2039 static int
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2040 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
2041 Lisp_Object window;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2042 int pos;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2043 int *columnp, *rowp;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2044 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2045 struct window *w = XWINDOW (window);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2046 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
2047 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
2048 int row = 0;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2049 int left = w->left;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2050 int top = w->top;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2051 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
2052 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
2053 int *charstarts;
6644
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2054 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
2055 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
2056
7651
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
2057 /* Find the right row. */
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2058 for (i = 0;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2059 i < height;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2060 i++)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2061 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2062 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
2063 if (linestart > pos)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2064 break;
9762
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2065 /* 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
2066 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
2067 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
2068 {
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2069 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
2070 break;
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2071 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2072 if (linestart > 0)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2073 row = i;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2074 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2075
7651
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
2076 /* 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
2077 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
2078 lastcol = left;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2079 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
2080 {
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2081 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
2082 {
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2083 *rowp = row + top;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2084 *columnp = i + left;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2085 return 1;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2086 }
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2087 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
2088 break;
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
2089 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
2090 lastcol = left + i;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2091 }
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2092
9762
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2093 /* 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
2094 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
2095 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
2096 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
2097 {
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2098 row++;
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2099 i = 0;
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2100 }
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2101
6644
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2102 *rowp = row + top;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2103 *columnp = lastcol;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2104 return 0;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2105 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2106
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2107 /* 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
2108 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
2109
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2110 static void
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2111 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
2112 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
2113 int hl;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2114 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2115 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
2116 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
2117 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
2118 int i;
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2119 int cursor_off = 0;
8164
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2120 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
2121 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
2122
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2123 /* Set these variables temporarily
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2124 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
2125 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
2126 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
2127 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
2128
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2129 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
2130 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
2131 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2132 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
2133 ? 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
2134 : w->left);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2135 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
2136 ? 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
2137 : 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
2138 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
2139
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2140 /* 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
2141 turn the cursor off. */
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2142 if (i == curs_y
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2143 && curs_x >= FRAME_X_DISPLAY_INFO (f)->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
2144 && curs_x <= FRAME_X_DISPLAY_INFO (f)->mouse_face_end_col)
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2145 {
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2146 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
2147 cursor_off = 1;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2148 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2149
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2150 dumpglyphs (f,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2151 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
2152 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
2153 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
2154 endcolumn - column,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2155 /* 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
2156 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
2157 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2158
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2159 /* 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
2160 if (cursor_off)
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2161 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
2162
8164
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2163 curs_x = old_curs_x;
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2164 curs_y = old_curs_y;
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2165
6757
770fe370479b (show_mouse_face): Change the mouse cursor accordingly.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6683
diff changeset
2166 /* 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
2167 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
2168 XDefineCursor (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
2169 f->display.x->cross_cursor);
6757
770fe370479b (show_mouse_face): Change the mouse cursor accordingly.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6683
diff changeset
2170 else
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2171 XDefineCursor (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
2172 f->display.x->text_cursor);
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2173 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2174
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2175 /* 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
2176 Redraw it unhighlighted first. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2177
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2178 static void
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2179 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
2180 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
2181 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2182 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
2183 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
2184
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2185 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
2186 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
2187 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
2188 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2189
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2190 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
2191 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
2192
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2193 /* 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
2194 *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
2195
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2196 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
2197 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
2198 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
2199 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
2200
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2201 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
2202 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
2203 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
2204
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2205 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
2206 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
2207
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2208 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
2209
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2210 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
2211 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
2212 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
2213 again. */
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2214
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2215 static void
11122
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2216 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
2217 FRAME_PTR *fp;
11122
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2218 int insist;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2219 Lisp_Object *bar_window;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2220 enum scroll_bar_part *part;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2221 Lisp_Object *x, *y;
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 727
diff changeset
2222 unsigned long *time;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2223 {
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2224 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
2225
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2226 BLOCK_INPUT;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2227
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2228 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
2229 x_scroll_bar_report_motion (fp, bar_window, part, x, y, time);
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2230 else
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2231 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2232 Window root;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2233 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
2234
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2235 Window dummy_window;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2236 int dummy;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2237
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2238 mouse_moved = 0;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2239 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
2240
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2241 /* 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
2242 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
2243 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
2244
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2245 /* 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
2246 &root,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2247
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2248 /* 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
2249 a different screen. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2250 &dummy_window,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2251
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2252 /* The position on that root window. */
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2253 &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
2254
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2255 /* 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
2256 &dummy, &dummy,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2257
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2258 /* 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
2259 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
2260 (unsigned int *) &dummy);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2261
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2262 /* 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
2263 containing the pointer. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2264 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2265 Window win, child;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2266 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
2267 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
2268
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2269 win = root;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2270
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2271 /* 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
2272 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
2273 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
2274
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2275 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
2276
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2277 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
2278 && 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
2279 {
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2280 /* 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
2281 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
2282 XTranslateCoordinates (FRAME_X_DISPLAY (*fp),
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2283
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2284 /* From-window, to-window. */
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2285 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
2286
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2287 /* 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
2288 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
2289
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2290 /* Child of win. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2291 &child);
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2292 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
2293 }
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2294 else
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2295 {
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2296 while (1)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2297 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2298 XTranslateCoordinates (FRAME_X_DISPLAY (*fp),
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2299
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2300 /* From-window, to-window. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2301 root, win,
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2302
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2303 /* From-position, to-position. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2304 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
2305
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2306 /* Child of win. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2307 &child);
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2308
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2309 if (child == None)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2310 break;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2311
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2312 win = child;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2313 parent_x = win_x;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2314 parent_y = win_y;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2315 }
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2316
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2317 /* Now we know that:
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2318 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
2319 (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
2320 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
2321 (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
2322 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
2323 (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
2324 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
2325 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
2326 never use them in that case.) */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2327
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2328 /* 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
2329 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
2330 }
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2331
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2332 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
2333 f1 = 0;
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2334
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2335 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
2336
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2337 /* 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
2338 if (! f1)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2339 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2340 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
2341
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2342 if (bar)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2343 {
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2344 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
2345 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
2346 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
2347 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2348 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2349
11122
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2350 if (f1 == 0 && insist)
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2351 f1 = selected_frame;
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2352
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2353 if (f1)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2354 {
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2355 int ignore1, ignore2;
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2356
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2357 /* 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
2358
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2359 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
2360 &last_mouse_glyph,
11122
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2361 FRAME_X_DISPLAY_INFO (f1)->grabbed
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2362 || insist);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2363
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2364 *bar_window = Qnil;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2365 *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
2366 *fp = f1;
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2367 XSETINT (*x, win_x);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2368 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
2369 *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
2370 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2371 }
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2372 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2373
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2374 UNBLOCK_INPUT;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2375 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2376
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2377 /* Scroll bar support. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2378
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2379 /* 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
2380 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
2381 bits. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2382 static struct scroll_bar *
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2383 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
2384 Window window_id;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2385 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2386 Lisp_Object tail, frame;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2387
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2388 for (tail = Vframe_list;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2389 XGCTYPE (tail) == Lisp_Cons;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2390 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
2391 {
6521
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
2392 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
2393
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
2394 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
2395 /* 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
2396 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
2397 abort ();
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2398
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2399 /* 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
2400 right window ID. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2401 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
2402 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
2403 /* 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
2404 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
2405 ! GC_NILP (bar) || (bar = condemned,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2406 condemned = Qnil,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2407 ! 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
2408 bar = XSCROLL_BAR (bar)->next)
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2409 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
2410 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
2411 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2412
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2413 return 0;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2414 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2415
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2416 /* 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
2417 scroll bar vector for it. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2418 static struct scroll_bar *
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2419 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
2420 struct window *window;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2421 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
2422 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2423 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
2424 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
2425 = 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
2426
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2427 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2428
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2429 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2430 XSetWindowAttributes a;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2431 unsigned long mask;
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2432 a.background_pixel = f->display.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
2433 a.event_mask = (ButtonPressMask | ButtonReleaseMask
1793
cf4c3f01ddb9 * xterm.c (x_scrollbar_create): Include PointerMotionHintMask in
Jim Blandy <jimb@redhat.com>
parents: 1787
diff changeset
2434 | ButtonMotionMask | PointerMotionHintMask
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2435 | ExposureMask);
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2436 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
2437
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2438 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
2439
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2440 #if 0
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2441
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2442 ac = 0;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2443 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
2444 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
2445 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
2446 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
2447 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
2448 sb_widget = XtCreateManagedWidget ("box",
5916
4e827db2523a (x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 5898
diff changeset
2449 boxWidgetClass,
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2450 f->display.x->edit_widget, al, ac);
5916
4e827db2523a (x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 5898
diff changeset
2451 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
2452 (bar, sb_widget->core.window);
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2453 #endif
5916
4e827db2523a (x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 5898
diff changeset
2454 SET_SCROLL_BAR_X_WINDOW
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2455 (bar,
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2456 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
2457
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2458 /* 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
2459 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
2460
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2461 /* 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
2462 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
2463
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2464 /* Attributes. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2465 mask, &a));
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2466 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2467
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2468 XSETWINDOW (bar->window, window);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2469 XSETINT (bar->top, top);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2470 XSETINT (bar->left, left);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2471 XSETINT (bar->width, width);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2472 XSETINT (bar->height, height);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2473 XSETINT (bar->start, 0);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2474 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
2475 bar->dragging = Qnil;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2476
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2477 /* 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
2478 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
2479 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
2480 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
2481 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
2482 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
2483
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
2484 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
2485
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2486 UNBLOCK_INPUT;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2487
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2488 return bar;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2489 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2490
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2491 /* 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
2492 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
2493 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
2494 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
2495 events.)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2496
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2497 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
2498 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
2499 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
2500 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
2501 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
2502 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2503 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
2504 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
2505 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
2506 int rebuild;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2507 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2508 int dragging = ! NILP (bar->dragging);
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2509 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
2510 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
2511 GC gc = f->display.x->normal_gc;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2512
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2513 /* 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
2514 if (! rebuild
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2515 && 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
2516 && 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
2517 return;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2518
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2519 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2520
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2521 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2522 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
2523 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
2524 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
2525
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2526 /* 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
2527 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
2528 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2529 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
2530
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2531 if (start < 0)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2532 start = 0;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2533 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
2534 start = top_range;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2535 end = start + length;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2536
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2537 if (end < start)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2538 end = start;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2539 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
2540 end = top_range;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2541 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2542
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2543 /* 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
2544 XSETINT (bar->start, start);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2545 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
2546
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2547 /* 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
2548 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
2549 end = top_range;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2550
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2551 /* 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
2552 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
2553 that many pixels tall. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2554 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
2555
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2556 /* 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
2557 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
2558 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
2559 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
2560
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2561 /* 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
2562 VERTICAL_SCROLL_BAR_LEFT_BORDER,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2563 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
2564 inside_width, start,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2565 False);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2566
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2567 /* 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
2568 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
2569
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2570 /* x, y, width, height */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2571 VERTICAL_SCROLL_BAR_LEFT_BORDER,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2572 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
2573 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
2574
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2575
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2576 /* 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
2577 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
2578 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
2579 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
2580
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2581 /* 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
2582 VERTICAL_SCROLL_BAR_LEFT_BORDER,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2583 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
2584 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
2585 False);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2586
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2587 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2588
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2589 UNBLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2590 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2591
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3585
diff changeset
2592 /* 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
2593 window configurations. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2594 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2595 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
2596 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
2597 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
2598 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2599 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
2600 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
2601
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2602 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2603
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2604 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2605 XWindowChanges wc;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2606 unsigned int mask = 0;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2607
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2608 wc.x = left;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2609 wc.y = top;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2610 wc.width = width;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2611 wc.height = height;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2612
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2613 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
2614 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
2615 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
2616 if (height != XINT (bar->height)) mask |= CWHeight;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2617
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2618 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
2619 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
2620 mask, &wc);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2621 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2622
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2623 XSETINT (bar->left, left);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2624 XSETINT (bar->top, top);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2625 XSETINT (bar->width, width);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2626 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
2627
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2628 UNBLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2629 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2630
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2631 /* 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
2632 to nil. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2633 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2634 x_scroll_bar_remove (bar)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2635 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
2636 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2637 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
2638
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2639 BLOCK_INPUT;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2640
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2641 /* 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
2642 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
2643
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2644 /* 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
2645 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
2646
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2647 UNBLOCK_INPUT;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2648 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2649
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2650 /* 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
2651 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
2652 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
2653 create one. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2654 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2655 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
2656 struct window *window;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2657 int portion, whole, position;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2658 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2659 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
2660 int top = XINT (window->top);
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2661 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
2662 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
2663
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2664 /* 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
2665 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
2666 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
2667 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
2668 = (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
2669 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f)
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
2670 : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->display.x->font)));
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2671 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
2672
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2673 struct scroll_bar *bar;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2674
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2675 /* Does the scroll bar exist yet? */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2676 if (NILP (window->vertical_scroll_bar))
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2677 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
2678 pixel_top, pixel_left,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2679 pixel_width, pixel_height);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2680 else
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2681 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2682 /* 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
2683 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
2684 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
2685 }
1720
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 /* 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
2688 dragged. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2689 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
2690 {
10287
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2691 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
2692
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2693 if (whole == 0)
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2694 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
2695 else
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2696 {
3686
910ea1d66bfd * xterm.c (XTset_vertical_scroll_bar): Use double type for
Jim Blandy <jimb@redhat.com>
parents: 3683
diff changeset
2697 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
2698 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
2699
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2700 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
2701 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2702 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2703
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2704 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
2705 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2706
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2707
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2708 /* 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
2709 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
2710 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
2711 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
2712 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
2713 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
2714 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
2715
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2716 /* 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
2717 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
2718 `*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
2719 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2720 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
2721 FRAME_PTR frame;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2722 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2723 /* The condemned list should be empty at this point; if it's not,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2724 then the rest of Emacs isn't using the condemn/redeem/judge
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2725 protocol correctly. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2726 if (! NILP (FRAME_CONDEMNED_SCROLL_BARS (frame)))
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2727 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2728
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2729 /* Move them all to the "condemned" list. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2730 FRAME_CONDEMNED_SCROLL_BARS (frame) = FRAME_SCROLL_BARS (frame);
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2731 FRAME_SCROLL_BARS (frame) = Qnil;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2732 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2733
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2734 /* 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
2735 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
2736 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2737 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
2738 struct window *window;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2739 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2740 struct scroll_bar *bar;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2741
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2742 /* 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
2743 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
2744 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2745
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2746 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
2747
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2748 /* 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
2749 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2750 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
2751
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2752 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
2753 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2754 /* 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
2755 the lists. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2756 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
2757 /* 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
2758 return;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2759 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
2760 window->vertical_scroll_bar))
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2761 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
2762 else
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2763 /* 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
2764 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
2765 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2766 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2767 else
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2768 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
2769
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2770 if (! NILP (bar->next))
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2771 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
2772
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2773 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
2774 bar->prev = Qnil;
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2775 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
2776 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
2777 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
2778 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2779 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2780
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2781 /* 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
2782 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
2783 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2784 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
2785 FRAME_PTR f;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2786 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2787 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
2788
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2789 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
2790
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2791 /* 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
2792 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
2793 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
2794
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2795 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
2796 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2797 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
2798
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2799 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
2800
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2801 next = b->next;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2802 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
2803 }
1787
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 /* 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
2806 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
2807 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2808
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2809
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2810 /* 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
2811
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2812 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
2813 mark bits. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2814 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2815 x_scroll_bar_expose (bar, event)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2816 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
2817 XEvent *event;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2818 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2819 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
2820 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
2821 GC gc = f->display.x->normal_gc;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2822
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2823 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2824
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2825 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
2826
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2827 /* 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
2828 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
2829
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2830 /* 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
2831 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
2832
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2833 UNBLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2834 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2835
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2836 /* 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
2837 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
2838
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2839 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
2840 mark bits. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2841 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2842 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
2843 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
2844 XEvent *event;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2845 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
2846 {
10287
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2847 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
2848 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2849
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2850 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
2851 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
2852 emacs_event->modifiers
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2853 = (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
2854 (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
2855 event->xbutton.state)
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2856 | (event->type == ButtonRelease
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2857 ? up_modifier
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2858 : down_modifier));
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2859 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
2860 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
2861 {
10287
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2862 int internal_height
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2863 = 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
2864 int top_range
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2865 = 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
2866 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
2867
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2868 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
2869 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
2870
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2871 if (y < XINT (bar->start))
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2872 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
2873 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
2874 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
2875 else
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2876 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
2877
5440f00480e6 * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2923
diff changeset
2878 /* 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
2879 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
2880 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
2881 #if 0
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2882 /* 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
2883 holding it. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2884 if (event->type == ButtonPress
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2885 && 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
2886 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
2887 #endif
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2888
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2889 /* 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
2890 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
2891 && ! NILP (bar->dragging))
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2892 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2893 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
2894 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
2895
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2896 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
2897 bar->dragging = Qnil;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2898 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2899
2958
3124e6244d1a * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2953
diff changeset
2900 /* 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
2901 #if 0
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2902 /* 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
2903 the handle. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2904 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
2905 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
2906 else
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2907 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
2908 #else
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2909 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
2910 #endif
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2911
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2912 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
2913 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2914 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2915
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2916 /* 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
2917
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2918 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
2919 mark bits. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2920 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2921 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
2922 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
2923 XEvent *event;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2924 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2925 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
2926
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2927 mouse_moved = 1;
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2928 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
2929
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2930 /* 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
2931 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
2932 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2933 /* 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
2934 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
2935
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2936 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
2937 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2938 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
2939
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2940 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
2941 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2942 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2943
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2944 /* 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
2945 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
2946 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2947 int dummy;
8279
4cde734c20e8 (note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents: 8164
diff changeset
2948 Window dummy_window;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2949
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2950 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
2951 &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
2952 &dummy, &dummy, &dummy, &dummy,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2953 (unsigned int *) &dummy);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2954 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2955 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2956
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2957 /* 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
2958 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
2959 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
2960 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
2961 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
2962 Lisp_Object *bar_window;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2963 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
2964 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
2965 unsigned long *time;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2966 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2967 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
2968 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
2969 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
2970 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
2971 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
2972 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
2973 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
2974
1803
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2975 BLOCK_INPUT;
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2976
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2977 /* 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
2978 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
2979 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
2980
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2981 /* 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
2982 &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
2983 &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
2984
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2985 /* 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
2986 &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
2987
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2988 /* 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
2989 &dummy_mask))
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2990 ;
2982
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2991 else
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2992 {
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2993 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
2994 = 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
2995 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
2996 = 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
2997
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
2998 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
2999
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3000 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
3001 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
3002
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3003 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
3004 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
3005 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
3006 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
3007
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
3008 *fp = f;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3009 *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
3010
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3011 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
3012 *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
3013 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
3014 *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
3015 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
3016 *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
3017 else
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3018 *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
3019
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
3020 XSETINT (*x, win_y);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
3021 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
3022
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3023 mouse_moved = 0;
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3024 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
3025 }
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3026
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3027 *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
3028
1803
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
3029 UNBLOCK_INPUT;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3030 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3031
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3032
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3033 /* 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
3034 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
3035 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
3036 redraw them. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3037
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3038 x_scroll_bar_clear (f)
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3039 FRAME_PTR f;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3040 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3041 Lisp_Object bar;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3042
9101
1cd322ea379a (x_scroll_bar_clear): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9011
diff changeset
3043 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
3044 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
3045 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
3046 0, 0, 0, 0, True);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3047 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3048
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3049 /* 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
3050 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
3051 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
3052
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3053 void
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3054 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
3055 XEvent event;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3056 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3057 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
3058 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
3059
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3060 BLOCK_INPUT;
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3061
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
3062 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
3063 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
3064 if (f)
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3065 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3066 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
3067 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3068 f->async_visible = 1;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3069 f->async_iconified = 0;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3070 SET_FRAME_GARBAGED (f);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3071 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3072 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3073 {
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
3074 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
3075 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
3076 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
3077 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3078 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3079 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3080 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3081 struct scroll_bar *bar
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3082 = x_window_to_scroll_bar (event.xexpose.window);
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
3083
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3084 if (bar)
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3085 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
3086 }
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3087
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3088 UNBLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3089 }
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3090
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3091 /* 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
3092
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3093 struct selection_event_queue
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3094 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3095 XEvent event;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3096 struct selection_event_queue *next;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3097 };
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3098
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3099 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
3100
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3101 /* 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
3102 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
3103
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3104 /* 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
3105
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3106 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
3107 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
3108 FRAME_PTR f;
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3109 XEvent *event;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3110 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3111 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
3112 = (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
3113
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
3114 if (queue_tmp != NULL)
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3115 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3116 queue_tmp->event = *event;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3117 queue_tmp->next = queue;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3118 queue = queue_tmp;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3119 }
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3120 }
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3121
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3122 /* 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
3123 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
3124
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3125 static void
10634
de7beeb9f02c (x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents: 10609
diff changeset
3126 x_unqueue_events (display)
de7beeb9f02c (x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents: 10609
diff changeset
3127 Display *display;
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3128 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
3129 while (queue != NULL)
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3130 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3131 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
3132 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
3133 queue = queue_tmp->next;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3134 free ((char *)queue_tmp);
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3135 }
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3136 }
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3137
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3138 /* Start queuing SelectionRequest events. */
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3139
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3140 void
10634
de7beeb9f02c (x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents: 10609
diff changeset
3141 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
3142 Display *display;
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3143 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3144 x_queue_selection_requests++;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3145 }
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3146
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3147 /* Stop queuing SelectionRequest events. */
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3148
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3149 void
10634
de7beeb9f02c (x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents: 10609
diff changeset
3150 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
3151 Display *display;
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3152 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3153 x_queue_selection_requests--;
10634
de7beeb9f02c (x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents: 10609
diff changeset
3154 x_unqueue_events (display);
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3155 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3156
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3157 /* The main X event-reading loop - XTread_socket. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3158
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3159 /* Timestamp of enter window event. This is only used by XTread_socket,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3160 but we have to put it out here, since static variables within functions
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3161 sometimes don't work. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3162 static Time enter_timestamp;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3163
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3164 /* 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
3165 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
3166 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
3167 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
3168
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3169 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
3170 given for enter_timestamp, above. */
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3171 static XComposeStatus compose_status;
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3172
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3173 /* Record the last 100 characters stored
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3174 to help debug the loss-of-chars-during-GC problem. */
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3175 int temp_index;
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3176 short temp_buffer[100];
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3177
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3178 /* 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
3179 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
3180 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
3181
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3182 /* Read events coming from the X server.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3183 This routine is called by the SIGIO handler.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3184 We return as soon as there are no more events to be read.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3185
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3186 Events representing keys are stored in buffer BUFP,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3187 which can hold up to NUMCHARS characters.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3188 We return the number of characters stored into the buffer,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3189 thus pretending to be `read'.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3190
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3191 WAITP is nonzero if we should block until input arrives.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3192 EXPECTED is nonzero if the caller knows input is available. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3193
1530
a7f8a1fe258e * xterm.c (x_convert_modifiers): Declare this to return an
Jim Blandy <jimb@redhat.com>
parents: 1436
diff changeset
3194 int
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3195 XTread_socket (sd, bufp, numchars, waitp, expected)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3196 register int sd;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3197 register struct input_event *bufp;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3198 register int numchars;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3199 int waitp;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3200 int expected;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3201 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3202 int count = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3203 int nbytes = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3204 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3205 int items_pending; /* How many items are in the X queue. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3206 XEvent event;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3207 struct frame *f;
3938
83d870a52936 * xterm.c (XTread_socket): Initialize event_found to zero, and
Jim Blandy <jimb@redhat.com>
parents: 3924
diff changeset
3208 int event_found = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3209 int prefix;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3210 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
3211 struct x_display_info *dpyinfo;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3212
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
3213 if (interrupt_input_blocked)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3214 {
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
3215 interrupt_input_pending = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3216 return -1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3217 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3218
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
3219 interrupt_input_pending = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3220 BLOCK_INPUT;
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
3221
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
3222 /* 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
3223 input_signal_count++;
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
3224
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3225 if (numchars <= 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3226 abort (); /* Don't think this happens. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3227
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3228 /* 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
3229 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
3230 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
3231 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3232 #if 0 /* This ought to be unnecessary; let's verify it. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3233 #ifdef FIOSNBIO
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3234 /* 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
3235 non-blocking, and then looks for EWOULDBLOCK. If O_NDELAY is set,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3236 FIOSNBIO is ignored, and instead of signalling EWOULDBLOCK,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3237 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
3238 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
3239 #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
3240 #endif
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3241
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3242 #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
3243 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
3244 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
3245 for X connections. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3246 #ifndef SIGIO
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3247 #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
3248 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
3249 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3250 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
3251 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
3252 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
3253 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
3254 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3255 #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
3256 #endif /* SIGIO */
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3257 #endif
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3258
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3259 /* 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
3260 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
3261 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3262 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
3263 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
3264 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3265
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3266 while (XPending (dpyinfo->display) != 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3267 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3268 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
3269 event_found = 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3270
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3271 switch (event.type)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3272 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3273 case ClientMessage:
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3274 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3275 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
3276 == 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
3277 && event.xclient.format == 32)
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3278 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3279 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
3280 == 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
3281 {
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
3282 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
3283 /* 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
3284 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
3285 since that might be an event for a deleted frame. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3286 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3287 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
3288 event.xclient.window,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3289 RevertToPointerRoot,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3290 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
3291 /* 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
3292 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3293 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
3294 == dpyinfo->Xatom_wm_save_yourself)
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3295 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3296 /* 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
3297 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
3298 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
3299 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
3300 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
3301 if (numchars > 0)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3302 {
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
3303 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
3304 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
3305
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3306 /* 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
3307 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
3308 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
3309 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
3310 event.xclient.window,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3311 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
3312 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3313 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
3314 event.xclient.window,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3315 0, 0);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3316 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3317 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3318 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
3319 == 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
3320 {
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
3321 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
3322 = 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
3323 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
3324
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3325 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3326 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3327 if (numchars == 0)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3328 abort ();
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3329
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3330 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
3331 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
3332 bufp++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3333
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3334 count += 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3335 numchars -= 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3336 }
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3337 }
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3338 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3339 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
3340 == dpyinfo->Xatom_wm_configure_denied)
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3341 {
9704
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 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
3344 == 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
3345 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3346 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
3347 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
3348 = 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
3349
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3350 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
3351 new_y = event.xclient.data.s[1];
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3352
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3353 if (f)
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3354 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3355 f->display.x->left_pos = new_x;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3356 f->display.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
3357 }
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3358 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3359 #if defined (USE_X_TOOLKIT) && defined (HAVE_X11R5)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3360 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
3361 == dpyinfo->Xatom_editres)
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3362 {
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
3363 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
3364 = x_any_window_to_frame (dpyinfo, event.xclient.window);
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
3365 _XEditResCheckMessages (f->display.x->widget, NULL,
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
3366 &event, NULL);
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3367 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3368 #endif /* USE_X_TOOLKIT and HAVE_X11R5 */
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3369 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3370 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3371
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3372 case SelectionNotify:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3373 #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
3374 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
3375 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3376 #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
3377 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
3378 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3379
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3380 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
3381 #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
3382 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
3383 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3384 #endif /* USE_X_TOOLKIT */
6941
a914781ef58a (Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents: 6934
diff changeset
3385 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3386 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
3387
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3388 if (numchars == 0)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3389 abort ();
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3390
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3391 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
3392 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
3393 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
3394 SELECTION_EVENT_TIME (bufp) = eventp->time;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3395 bufp++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3396
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3397 count += 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3398 numchars -= 1;
6941
a914781ef58a (Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents: 6934
diff changeset
3399 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3400 break;
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 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
3403 #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
3404 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
3405 goto OTHER;
6984
8e9465c13702 (XTread_socket): Delete the non-NEW_SELECTIONS code
Richard M. Stallman <rms@gnu.org>
parents: 6983
diff changeset
3406 #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
3407 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
3408 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
3409 &event);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3410 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3411 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3412 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
3413
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3414 if (numchars == 0)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3415 abort ();
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3416
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3417 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
3418 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
3419 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
3420 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
3421 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
3422 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
3423 SELECTION_EVENT_TIME (bufp) = eventp->time;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3424 bufp++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3425
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3426 count += 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3427 numchars -= 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3428 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3429 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3430
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3431 case PropertyNotify:
6984
8e9465c13702 (XTread_socket): Delete the non-NEW_SELECTIONS code
Richard M. Stallman <rms@gnu.org>
parents: 6983
diff changeset
3432 #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
3433 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
3434 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3435 #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
3436 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
3437 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3438
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3439 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
3440 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
3441 if (f)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3442 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3443 int x, y;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3444 f->display.x->parent_desc = event.xreparent.parent;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3445 x_real_positions (f, &x, &y);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3446 f->display.x->left_pos = x;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3447 f->display.x->top_pos = y;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3448 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3449 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3450
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3451 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
3452 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
3453 if (f)
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 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
3456 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3457 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
3458 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
3459 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
3460 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3461 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
3462 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
3463 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
3464 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
3465 event.xexpose.width, event.xexpose.height);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3466 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3467 else
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3468 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3469 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
3470 = 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
3471
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3472 if (bar)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3473 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
3474 #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
3475 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3476 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3477 #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
3478 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3479 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3480
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3481 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
3482 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
3483 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
3484 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
3485 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3486 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3487 dumprectangle (f,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3488 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
3489 event.xgraphicsexpose.width,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3490 event.xgraphicsexpose.height);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3491 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3492 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3493 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3494 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3495 #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
3496 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3497
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3498 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
3499 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
3500 available */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3501 break;
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 case UnmapNotify:
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
3504 f = x_any_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
3505 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
3506 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
3507 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3508 /* 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
3509 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
3510 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
3511 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
3512 /* 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
3513 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
3514 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
3515 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
3516 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
3517 f->async_iconified = 1;
9823
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3518
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3519 bufp->kind = iconify_event;
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3520 XSETFRAME (bufp->frame_or_window, f);
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3521 bufp++;
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3522 count++;
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3523 numchars--;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3524 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3525 #ifdef 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
3526 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3527 #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
3528 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3529
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3530 case MapNotify:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3531 /* 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
3532 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
3533 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
3534 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3535 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3536 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
3537 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
3538
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3539 /* 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
3540 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
3541 SET_FRAME_GARBAGED (f);
9823
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3542
11348
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3543 if (f->iconified)
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3544 {
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3545 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
3546 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
3547 bufp++;
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3548 count++;
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3549 numchars--;
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3550 }
11921
6ecaa3fac4e4 (XTread_socket): For MapNotify, call record_asynch_buffer_change.
Karl Heuer <kwzh@gnu.org>
parents: 11915
diff changeset
3551 else
6ecaa3fac4e4 (XTread_socket): For MapNotify, call record_asynch_buffer_change.
Karl Heuer <kwzh@gnu.org>
parents: 11915
diff changeset
3552 /* 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
3553 to update the frame titles
6ecaa3fac4e4 (XTread_socket): For MapNotify, call record_asynch_buffer_change.
Karl Heuer <kwzh@gnu.org>
parents: 11915
diff changeset
3554 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
3555 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
3556 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3557 #ifdef 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
3558 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3559 #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
3560 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3561
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3562 /* 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
3563 case VisibilityNotify:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3564 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3565
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3566 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
3567 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
3568
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3569 if (f != 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3570 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3571 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
3572 /* 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
3573 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
3574 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
3575 int modifiers;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3576
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3577 event.xkey.state
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3578 |= 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
3579 extra_keyboard_modifiers);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3580 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
3581
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3582 /* 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
3583
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3584 /* 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
3585 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
3586 event.xkey.state &= ~ControlMask;
10287
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
3587 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
3588 80, &keysym, &compose_status);
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3589
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3590 orig_keysym = keysym;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3591
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3592 if (numchars > 1)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3593 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3594 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
3595 || keysym == XK_Delete
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3596 || 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
3597 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */
3218
0069a30d083f (XTread_socket, case KeyPress) [HPUX]:
Richard M. Stallman <rms@gnu.org>
parents: 3135
diff changeset
3598 #ifdef HPUX
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3599 /* 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
3600 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
3601 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
3602 incorrectly. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3603 || ((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
3604 && (unsigned)(keysym) < XK_KP_Space)
3218
0069a30d083f (XTread_socket, case KeyPress) [HPUX]:
Richard M. Stallman <rms@gnu.org>
parents: 3135
diff changeset
3605 #endif
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3606 #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
3607 || orig_keysym == XK_dead_circumflex
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3608 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3609 #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
3610 || orig_keysym == XK_dead_grave
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3611 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3612 #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
3613 || orig_keysym == XK_dead_tilde
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3614 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3615 #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
3616 || orig_keysym == XK_dead_diaeresis
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3617 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3618 #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
3619 || orig_keysym == XK_dead_macron
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3620 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3621 #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
3622 || orig_keysym == XK_dead_degree
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3623 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3624 #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
3625 || orig_keysym == XK_dead_acute
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3626 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3627 #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
3628 || orig_keysym == XK_dead_cedilla
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3629 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3630 #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
3631 || orig_keysym == XK_dead_breve
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3632 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3633 #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
3634 || orig_keysym == XK_dead_ogonek
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3635 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3636 #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
3637 || orig_keysym == XK_dead_caron
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3638 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3639 #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
3640 || orig_keysym == XK_dead_doubleacute
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3641 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3642 #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
3643 || orig_keysym == XK_dead_abovedot
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3644 #endif
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3645 || 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
3646 || 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
3647 /* 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
3648 || (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
3649 && ! (IsModifierKey (orig_keysym)
4244
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3650 #ifndef HAVE_X11R5
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3651 #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
3652 || ((unsigned)(orig_keysym) == XK_Mode_switch)
4244
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3653 #endif
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3654 #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
3655 || ((unsigned)(orig_keysym) == XK_Num_Lock)
4244
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3656 #endif
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3657 #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
3658 ))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3659 {
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3660 if (temp_index == sizeof temp_buffer / sizeof (short))
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3661 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
3662 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
3663 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
3664 bufp->code = keysym;
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
3665 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
3666 bufp->modifiers
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
3667 = 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
3668 modifiers);
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
3669 bufp->timestamp = event.xkey.time;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3670 bufp++;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3671 count++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3672 numchars--;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3673 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3674 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
3675 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3676 register int i;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3677
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3678 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
3679 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3680 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
3681 temp_index = 0;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3682 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
3683 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
3684 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
3685 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
3686 bufp->modifiers
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3687 = 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
3688 modifiers);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3689 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
3690 bufp++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3691 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3692
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3693 count += nbytes;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3694 numchars -= nbytes;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3695 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3696 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3697 abort ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3698 }
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3699 else
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3700 abort ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3701 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3702 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3703
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3704 /* 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
3705 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
3706 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
3707 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
3708 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
3709
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3710 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
3711 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
3712
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3713 if (event.xcrossing.focus) /* Entered Window */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3714 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3715 /* 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
3716 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
3717 || !(f->auto_lower)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3718 || (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
3719 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
3720 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
3721 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
3722 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3723 }
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
3724 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
3725 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
3726 /* 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
3727 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
3728 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3729 note_mouse_movement (f, &event.xmotion);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3730 #ifdef 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
3731 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3732 #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
3733 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3734
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3735 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
3736 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
3737 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
3738 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
3739 if (f)
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
3740 x_new_focus_frame (dpyinfo, f);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3741 #ifdef 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
3742 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3743 #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
3744 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3745
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3746
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3747 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
3748 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
3749 if (f)
7169
c21fcad6f1f5 (XTread_socket): Only top window cares about LeaveNotify.
Karl Heuer <kwzh@gnu.org>
parents: 7167
diff changeset
3750 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3751 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
3752 /* 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
3753 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
3754 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
3755
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3756 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
3757 x_mouse_leave (dpyinfo);
7169
c21fcad6f1f5 (XTread_socket): Only top window cares about LeaveNotify.
Karl Heuer <kwzh@gnu.org>
parents: 7167
diff changeset
3758 else
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3759 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
3760 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
3761 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
3762 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
3763 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
3764 }
7169
c21fcad6f1f5 (XTread_socket): Only top window cares about LeaveNotify.
Karl Heuer <kwzh@gnu.org>
parents: 7167
diff changeset
3765 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3766 #ifdef 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
3767 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3768 #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
3769 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3770
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3771 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
3772 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
3773 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
3774 && 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
3775 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
3776 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
3777 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
3778 #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
3779 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3780 #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
3781 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3782
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3783 case MotionNotify:
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3784 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3785 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
3786 && 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
3787 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
3788 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
3789 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
3790 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3791 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
3792 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3793 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3794 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
3795 = 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
3796
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3797 if (bar)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3798 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
3799
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3800 /* 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
3801 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
3802 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
3803 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3804 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3805 #ifdef 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
3806 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3807 #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
3808 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3809
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3810 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
3811 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
3812 if (f
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3813 #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
3814 && (event.xconfigure.window == XtWindow (f->display.x->widget))
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
3815 #endif
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3816 )
3030
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3817 {
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3818 #ifndef USE_X_TOOLKIT
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3819 /* 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
3820 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
3821 of the EmacsFrame widget. */
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3822
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3823 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
3824 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
3825
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3826 /* 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
3827 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
3828 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
3829 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
3830 || rows != f->height
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3831 || event.xconfigure.width != f->display.x->pixel_width
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3832 || event.xconfigure.height != f->display.x->pixel_height)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3833 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3834 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
3835 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
3836 }
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3837 #endif
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3838
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3839 /* 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
3840 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
3841 if (1
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3842 #ifndef USE_X_TOOLKIT
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3843 && ! event.xconfigure.send_event
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3844 #endif
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3845 )
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3846 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3847 Window win, child;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3848 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
3849
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3850 /* 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
3851 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
3852 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
3853 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
3854 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
3855 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
3856
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3857 /* 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
3858 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
3859 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
3860
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3861 /* 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
3862 -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
3863 -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
3864 &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
3865
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3866 /* Child of win. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3867 &child);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3868 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
3869 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
3870 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3871
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3872 f->display.x->pixel_width = event.xconfigure.width;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3873 f->display.x->pixel_height = event.xconfigure.height;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3874 f->display.x->left_pos = event.xconfigure.x;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3875 f->display.x->top_pos = event.xconfigure.y;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3876
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3877 /* 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
3878 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
3879 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3880 int x, y;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3881 x_real_positions (f, &x, &y);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3882 f->display.x->left_pos = x;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3883 f->display.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
3884 /* 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
3885 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
3886 /* #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
3887 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
3888 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3889 /* 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
3890 we must put them below top_pos in the future. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3891 f->display.x->win_gravity = NorthWestGravity;
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
3892 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
3893 }
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3894 /* #endif */
7738
a810335742bb (x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents: 7706
diff changeset
3895 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3896 }
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3897 #ifdef USE_X_TOOLKIT
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3898 goto OTHER;
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3899 #else
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3900 break;
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3901 #endif
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3902
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3903 case ButtonPress:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3904 case ButtonRelease:
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3905 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3906 /* 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
3907 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
3908 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
3909 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
3910
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3911 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
3912
10274
83aaf59dabbe (XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 10223
diff changeset
3913 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
3914 && 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
3915 f = last_mouse_frame;
83aaf59dabbe (XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 10223
diff changeset
3916 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
3917 f = x_window_to_frame (dpyinfo, event.xmotion.window);
10274
83aaf59dabbe (XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 10223
diff changeset
3918
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3919 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3920 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
3921 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
3922 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
3923 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3924 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3925 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3926 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
3927 = 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
3928
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3929 if (bar)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3930 x_scroll_bar_handle_click (bar, &event, &emacs_event);
11953
d349456b4b1c (XTread_socket): Don't call popup_get_selection here.
Karl Heuer <kwzh@gnu.org>
parents: 11921
diff changeset
3931 #if 0 /* It doesn't make sense to do this.
d349456b4b1c (XTread_socket): Don't call popup_get_selection here.
Karl Heuer <kwzh@gnu.org>
parents: 11921
diff changeset
3932 Menu bar clicks are handled within the toolkit itself. */
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3933 #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
3934 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3935 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3936 /* Assume we have a menubar button press. A bad
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3937 assumption should behave benignly. */
11375
c7777cf7ef6c (XTread_socket): Pass dpyinfo to popup_get_selection.
Richard M. Stallman <rms@gnu.org>
parents: 11348
diff changeset
3938 popup_get_selection (&event, dpyinfo);
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3939 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3940 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3941 #endif /* USE_X_TOOLKIT */
11953
d349456b4b1c (XTread_socket): Don't call popup_get_selection here.
Karl Heuer <kwzh@gnu.org>
parents: 11921
diff changeset
3942 #endif
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3943 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3944
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3945 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
3946 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3947 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
3948 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
3949 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3950 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3951 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3952 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
3953 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3954
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3955 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
3956 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3957 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
3958 bufp++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3959 count++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3960 numchars--;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3961 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3962
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3963 #ifdef 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
3964 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3965 #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
3966 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3967 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3968
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3969 case CirculateNotify:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3970 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3971 case CirculateRequest:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3972 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3973
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3974 case MappingNotify:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3975 /* 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
3976 local cache. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3977 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
3978 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3979 case MappingModifier:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3980 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
3981 /* 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
3982 case MappingKeyboard:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3983 XRefreshKeyboardMapping (&event.xmapping);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3984 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3985 #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
3986 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3987 #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
3988 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3989
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3990 default:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3991 #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
3992 OTHER:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3993 BLOCK_INPUT;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3994 XtDispatchEvent (&event);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3995 UNBLOCK_INPUT;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3996 #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
3997 break;
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3998 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3999 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4000 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4001
8485
6e4b40c80021 (XTread_socket): Don't test X_IO_BUG; make that code unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 8437
diff changeset
4002 /* 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
4003 when the window is destroyed. Detect that. (1994.) */
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4004 if (! event_found)
7916
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4005 {
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4006 /* 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
4007 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
4008 B. Bretthauer, 1994 */
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4009 x_noop_count++;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4010 if (x_noop_count >= 100)
7916
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4011 {
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4012 x_noop_count=0;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4013 /* Use the first display in the list. Why not? */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4014 XNoOp (x_display_list->display);
7916
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4015 }
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4016 }
5753
eb44ecad5557 (XTread_socket): Add X_IO_BUG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 5740
diff changeset
4017
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
4018 /* 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
4019 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
4020 /* ??? 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
4021 if (pending_autoraise_frame)
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
4022 {
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
4023 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
4024 pending_autoraise_frame = 0;
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
4025 }
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
4026
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4027 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4028 return count;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4029 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4030
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4031 /* Drawing the cursor. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4032
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4033
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4034 /* Draw a hollow box cursor. Don't change the inside of the box. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4035
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4036 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4037 x_draw_box (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4038 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4039 {
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
4040 int left = CHAR_TO_PIXEL_COL (f, curs_x);
e44c31d682b1 (x_draw_box): Use curs_x and curs_y, not f->cursor_[xy].
Richard M. Stallman <rms@gnu.org>
parents: 8036
diff changeset
4041 int top = CHAR_TO_PIXEL_ROW (f, curs_y);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4042 int width = FONT_WIDTH (f->display.x->font);
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
4043 int height = f->display.x->line_height;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4044
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4045 XDrawRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4046 f->display.x->cursor_gc,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4047 left, top, width - 1, height - 1);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4048 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4049
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4050 /* Clear the cursor of frame F to background color,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4051 and mark the cursor as not shown.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4052 This is used when the text where the cursor is
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4053 is about to be rewritten. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4054
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4055 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4056 clear_cursor (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4057 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4058 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4059 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4060
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4061 if (! FRAME_VISIBLE_P (f)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4062 || f->phys_cursor_x < 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4063 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4064
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4065 x_display_cursor (f, 0);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4066 f->phys_cursor_x = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4067 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4068
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4069 /* Redraw the glyph at ROW, COLUMN on frame F, in the style
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4070 HIGHLIGHT. HIGHLIGHT is as defined for dumpglyphs. Return the
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4071 glyph drawn. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4072
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4073 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4074 x_draw_single_glyph (f, row, column, glyph, highlight)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4075 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4076 int row, column;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4077 GLYPH glyph;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4078 int highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4079 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4080 dumpglyphs (f,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4081 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
4082 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
4083 &glyph, 1, highlight, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4084 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4085
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4086 static void
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4087 x_display_bar_cursor (f, on)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4088 struct frame *f;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4089 int on;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4090 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4091 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
4092
2235
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4093 /* 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
4094 frames; in the latter case, the frame may be in the midst of
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4095 changing its size, and curs_x and curs_y may be off the frame. */
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4096 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
4097 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4098
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4099 if (! on && f->phys_cursor_x < 0)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4100 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4101
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4102 /* If we're not updating, then we want to use the current frame's
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4103 cursor position, not our local idea of where the cursor ought to be. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4104 if (f != updating_frame)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4105 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4106 curs_x = FRAME_CURSOR_X (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4107 curs_y = FRAME_CURSOR_Y (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4108 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4109
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4110 /* 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
4111 if (f->phys_cursor_x >= 0
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4112 && (!on
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4113 || f->phys_cursor_x != curs_x
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4114 || f->phys_cursor_y != curs_y
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4115 || f->display.x->current_cursor != bar_cursor))
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4116 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4117 /* 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
4118 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
4119 f->phys_cursor_glyph,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4120 current_glyphs->highlight[f->phys_cursor_y]);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4121 f->phys_cursor_x = -1;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4122 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4123
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4124 /* 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
4125 if (on
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4126 && (f->phys_cursor_x < 0
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4127 || (f->display.x->current_cursor != bar_cursor)))
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4128 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4129 f->phys_cursor_glyph
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4130 = ((current_glyphs->enable[curs_y]
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4131 && curs_x < current_glyphs->used[curs_y])
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4132 ? current_glyphs->glyphs[curs_y][curs_x]
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4133 : SPACEGLYPH);
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4134 XFillRectangle (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
4135 f->display.x->cursor_gc,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4136 CHAR_TO_PIXEL_COL (f, curs_x),
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4137 CHAR_TO_PIXEL_ROW (f, curs_y),
10743
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4138 max (f->display.x->cursor_width, 1),
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4139 f->display.x->line_height);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4140
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4141 f->phys_cursor_x = curs_x;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4142 f->phys_cursor_y = curs_y;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4143
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4144 f->display.x->current_cursor = bar_cursor;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4145 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4146
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4147 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
4148 XFlush (FRAME_X_DISPLAY (f));
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4149 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4150
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4151
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4152 /* Turn the displayed cursor of frame F on or off according to ON.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4153 If ON is nonzero, where to put the cursor is specified
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4154 by F->cursor_x and F->cursor_y. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4155
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4156 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4157 x_display_box_cursor (f, on)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4158 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4159 int on;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4160 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4161 struct frame_glyphs *current_glyphs = FRAME_CURRENT_GLYPHS (f);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4162
2235
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4163 /* 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
4164 frames; in the latter case, the frame may be in the midst of
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4165 changing its size, and curs_x and curs_y may be off the frame. */
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4166 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
4167 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4168
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4169 /* 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
4170 if (!on && f->phys_cursor_x < 0)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4171 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4172
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4173 /* If we're not updating, then we want to use the current frame's
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4174 cursor position, not our local idea of where the cursor ought to be. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4175 if (f != updating_frame)
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4176 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4177 curs_x = FRAME_CURSOR_X (f);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4178 curs_y = FRAME_CURSOR_Y (f);
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4179 }
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4180
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4181 /* If cursor is currently being shown and we don't want it to be
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4182 or it is in the wrong place,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4183 or we want a hollow box and it's not so, (pout!)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4184 erase it. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4185 if (f->phys_cursor_x >= 0
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4186 && (!on
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4187 || f->phys_cursor_x != curs_x
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4188 || f->phys_cursor_y != curs_y
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4189 || (f->display.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
4190 && (f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame))))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4191 {
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
4192 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
4193 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
4194
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
4195 /* 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
4196 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
4197 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
4198 &&
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4199 (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
4200 || (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
4201 && 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
4202 &&
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4203 (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
4204 || (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
4205 && 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
4206 /* 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
4207 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
4208 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
4209 && 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
4210 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
4211
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
4212 /* 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
4213 we must explicitly clear the line's whole height. */
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
4214 if (FONT_HEIGHT (f->display.x->font) != f->display.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
4215 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
4216 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
4217 CHAR_TO_PIXEL_ROW (f, f->phys_cursor_y),
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
4218 FONT_WIDTH (f->display.x->font),
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
4219 f->display.x->line_height, False);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4220 /* Erase the cursor by redrawing the character underneath it. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4221 x_draw_single_glyph (f, f->phys_cursor_y, f->phys_cursor_x,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4222 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
4223 (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
4224 ? 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
4225 : current_glyphs->highlight[f->phys_cursor_y]));
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4226 f->phys_cursor_x = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4227 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4228
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4229 /* If we want to show a cursor,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4230 or we want a box cursor and it's not so,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4231 write it in the right place. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4232 if (on
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4233 && (f->phys_cursor_x < 0
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4234 || (f->display.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
4235 && f == FRAME_X_DISPLAY_INFO (f)->x_highlight_frame)))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4236 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4237 f->phys_cursor_glyph
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4238 = ((current_glyphs->enable[curs_y]
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4239 && curs_x < current_glyphs->used[curs_y])
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
4240 ? current_glyphs->glyphs[curs_y][curs_x]
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4241 : SPACEGLYPH);
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
4242 if (f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4243 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4244 x_draw_box (f);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4245 f->display.x->current_cursor = hollow_box_cursor;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4246 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4247 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4248 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4249 x_draw_single_glyph (f, curs_y, curs_x,
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4250 f->phys_cursor_glyph, 2);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4251 f->display.x->current_cursor = filled_box_cursor;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4252 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4253
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4254 f->phys_cursor_x = curs_x;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4255 f->phys_cursor_y = curs_y;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4256 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4257
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4258 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
4259 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4260 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4261
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4262 x_display_cursor (f, on)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4263 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4264 int on;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4265 {
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4266 BLOCK_INPUT;
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4267
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4268 if (FRAME_DESIRED_CURSOR (f) == filled_box_cursor)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4269 x_display_box_cursor (f, on);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4270 else if (FRAME_DESIRED_CURSOR (f) == bar_cursor)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4271 x_display_bar_cursor (f, on);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4272 else
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4273 /* Those are the only two we have implemented! */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4274 abort ();
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4275
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4276 UNBLOCK_INPUT;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4277 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4278
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4279 /* Icons. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4280
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4281 /* Refresh bitmap kitchen sink icon for frame F
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4282 when we get an expose event for it. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4283
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4284 refreshicon (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4285 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4286 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4287 /* Normally, the window manager handles this function. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4288 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4289
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4290 /* Make the x-window of frame F use the gnu icon bitmap. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4291
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4292 int
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4293 x_bitmap_icon (f, file)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4294 struct frame *f;
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4295 Lisp_Object file;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4296 {
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4297 int mask, bitmap_id;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4298 Window icon_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4299
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4300 if (FRAME_X_WINDOW (f) == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4301 return 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4302
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4303 /* Free up our existing icon bitmap if any. */
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4304 if (f->display.x->icon_bitmap > 0)
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4305 x_destroy_bitmap (f, f->display.x->icon_bitmap);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4306 f->display.x->icon_bitmap = 0;
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4307
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4308 if (STRINGP (file))
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4309 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
4310 else
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4311 {
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4312 /* 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
4313 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
4314 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
4315 = 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
4316 gnu_width, gnu_height);
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4317
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4318 /* The first time we create the GNU bitmap,
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4319 this increments the refcount one extra time.
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4320 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
4321 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
4322 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
4323
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4324 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
4325 }
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4326
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4327 x_wm_set_icon_pixmap (f, bitmap_id);
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4328 f->display.x->icon_bitmap = bitmap_id;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4329
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4330 return 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4331 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4332
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4333
12074
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4334 /* 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
4335 Use ICON_NAME as the text. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4336
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4337 int
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4338 x_text_icon (f, icon_name)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4339 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4340 char *icon_name;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4341 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4342 if (FRAME_X_WINDOW (f) == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4343 return 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4344
12074
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4345 #ifdef HAVE_X11R4
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4346 {
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4347 XTextProperty text;
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4348 text.value = (unsigned char *) icon_name;
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4349 text.encoding = XA_STRING;
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4350 text.format = 8;
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4351 text.nitems = strlen (icon_name);
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4352 #ifdef USE_X_TOOLKIT
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4353 XSetWMIconName (FRAME_X_DISPLAY (f), XtWindow (f->display.x->widget),
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4354 &text);
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4355 #else /* not USE_X_TOOLKIT */
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4356 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
4357 #endif /* not USE_X_TOOLKIT */
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4358 }
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4359 #else /* not HAVE_X11R4 */
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4360 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
4361 #endif /* not HAVE_X11R4 */
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4362
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4363 if (f->display.x->icon_bitmap > 0)
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4364 x_destroy_bitmap (f, f->display.x->icon_bitmap);
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4365 f->display.x->icon_bitmap = 0;
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4366 x_wm_set_icon_pixmap (f, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4367
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4368 return 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4369 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4370
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4371 /* Handling X errors. */
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4372
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4373 /* 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
4374
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4375 static SIGTYPE
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4376 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
4377 Display *display;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4378 char *error_message;
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4379 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4380 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
4381 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
4382
11904
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4383 /* Whatever we were in the middle of, we are going to throw out of it,
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4384 so reassure various things that have error checks about being
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4385 called with input blocked. */
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4386 TOTALLY_UNBLOCK_INPUT;
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4387
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4388 if (_Xdebug)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4389 abort ();
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4390
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4391 /* 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
4392 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
4393 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
4394 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4395 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
4396 minibuf_frame
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4397 = 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
4398 if (FRAME_X_P (XFRAME (frame))
bf33c9179a6b (x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents: 10755
diff changeset
4399 && FRAME_X_P (XFRAME (minibuf_frame))
bf33c9179a6b (x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents: 10755
diff changeset
4400 && ! EQ (frame, minibuf_frame)
bf33c9179a6b (x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents: 10755
diff changeset
4401 && 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
4402 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
4403 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4404
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4405 /* 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
4406 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
4407 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
4408 FOR_EACH_FRAME (tail, frame)
10921
bf33c9179a6b (x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents: 10755
diff changeset
4409 if (FRAME_X_P (XFRAME (frame))
bf33c9179a6b (x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents: 10755
diff changeset
4410 && 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
4411 {
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4412 /* 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
4413 trying to find a replacement. */
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4414 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
4415 Fdelete_frame (frame, Qt);
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4416 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4417
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4418 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
4419
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4420 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
4421 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4422 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
4423 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
4424 exit (70);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4425 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4426
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4427 /* 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
4428 #ifdef SIGIO
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4429 sigunblock (sigmask (SIGIO));
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4430 #endif
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4431 sigunblock (sigmask (SIGALRM));
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4432 TOTALLY_UNBLOCK_INPUT;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4433
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4434 error ("%s", error_message);
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4435 }
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4436
10743
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4437 static SIGTYPE
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4438 x_connection_signal (signalnum) /* If we don't have an argument, */
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4439 int signalnum; /* some compilers complain in signal calls. */
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4440 {
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4441 /* We really ought to close the connection to the display
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4442 that actually failed.
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4443 But do we actually get this signal ever with X11? */
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4444 fprintf (stderr, "X connection closed");
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4445 shut_down_emacs (0, 0, Qnil);
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4446 exit (70);
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4447 }
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
4448
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4449 /* 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
4450 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
4451 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
4452
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4453 static int
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4454 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
4455 Display *display;
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4456 XErrorEvent *error;
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4457 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4458 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
4459
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4460 /* 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
4461 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
4462
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4463 XGetErrorText (display, error->error_code, buf, sizeof (buf));
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4464 sprintf (buf1, "X protocol error: %s on protocol request %d",
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4465 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
4466 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
4467 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4468
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4469 /* 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
4470 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
4471 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
4472
1875
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4473 static int
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4474 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
4475 Display *display;
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4476 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4477 char buf[256];
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4478
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4479 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
4480 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
4481 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4482
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4483 /* 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
4484 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
4485 #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
4486
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4487 /* 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
4488 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
4489 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
4490
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4491 static int
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4492 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
4493 Display *display;
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4494 XErrorEvent *error;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4495 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4496 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
4497 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
4498 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4499
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4500
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4501 /* 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
4502 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
4503 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
4504
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4505 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
4506 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
4507
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4508 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
4509 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
4510
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4511 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
4512
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4513 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
4514
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4515 void
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4516 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
4517 Display *dpy;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4518 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4519 /* 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
4520 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
4521
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4522 /* 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
4523 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
4524 = (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
4525 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
4526
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4527 /* 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
4528 XSetErrorHandler (x_error_catcher);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4529 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4530
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4531 /* 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
4532 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
4533 sprintf (a buffer, FORMAT, the x error message text) as the text. */
5986
fdb3959bbaf7 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 5953
diff changeset
4534
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4535 void
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4536 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
4537 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
4538 char *format;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4539 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4540 /* 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
4541 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
4542
3558
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4543 if (x_caught_error_message[0])
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4544 {
3558
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4545 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
4546
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4547 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
4548 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
4549 error (buf);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4550 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4551 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4552
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4553 /* 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
4554
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4555 int
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4556 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
4557 Display *dpy;
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4558 {
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4559 /* 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
4560 XSync (dpy, False);
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4561
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4562 return x_caught_error_message[0] != 0;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4563 }
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4564
5986
fdb3959bbaf7 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 5953
diff changeset
4565 /* Stop catching X protocol errors and let them make Emacs die. */
fdb3959bbaf7 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 5953
diff changeset
4566
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4567 void
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4568 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
4569 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
4570 {
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
4571 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
4572 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
4573 XSetErrorHandler (x_error_quitter);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4574 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4575
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4576 #if 0
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4577 static unsigned int x_wire_count;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4578 x_trace_wire ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4579 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4580 fprintf (stderr, "Lib call: %d\n", ++x_wire_count);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4581 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4582 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4583
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4584
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4585 /* 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
4586
8291
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4587 /* 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
4588 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
4589 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
4590 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
4591
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4592 Lisp_Object
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4593 x_new_font (f, fontname)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4594 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4595 register char *fontname;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4596 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4597 int already_loaded;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4598 int n_matching_fonts;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4599 XFontStruct *font_info;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4600 char **font_names;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4601
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4602 /* Get a list of all the fonts that match this name. Once we
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4603 have a list of matching fonts, we compare them against the fonts
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4604 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
4605 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
4606 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
4607 /* 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
4608 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
4609 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
4610 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
4611
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4612 /* 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
4613 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
4614 fail to find a font, but XLoadQueryFont may still find it. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4615
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4616 /* 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
4617 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
4618 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
4619 {
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4620 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
4621
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4622 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
4623 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
4624 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
4625 || !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
4626 {
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4627 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
4628 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
4629 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
4630 }
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4631 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4632 found_font:
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4633
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4634 /* 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
4635 if (already_loaded >= 0)
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4636 f->display.x->font = FRAME_X_DISPLAY_INFO (f)->font_table[already_loaded].font;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4637 /* Otherwise, load the font and add it to the table. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4638 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4639 {
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4640 int i;
8291
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4641 char *full_name;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4642 XFontStruct *font;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4643 int n_fonts;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4644
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4645 /* 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
4646 #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
4647 /* 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
4648 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
4649 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
4650 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
4651 #else
039cbddadc51 * xfaces.c (merge_faces): You can't tell if a font is a
Jim Blandy <jimb@redhat.com>
parents: 3045
diff changeset
4652 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
4653 #endif
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4654
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4655 /* 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
4656 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
4657 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
4658
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4659 font = (XFontStruct *) XLoadQueryFont (FRAME_X_DISPLAY (f), fontname);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4660 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
4661 {
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4662 /* 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
4663 if (n_matching_fonts)
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4664 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
4665 return Qnil;
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4666 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4667
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4668 /* 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
4669 if (FRAME_X_DISPLAY_INFO (f)->font_table_size == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4670 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4671 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
4672 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
4673 = (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
4674 * sizeof (struct font_info));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4675 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4676 /* 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
4677 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
4678 >= FRAME_X_DISPLAY_INFO (f)->font_table_size)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4679 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4680 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
4681 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
4682 = (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
4683 (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
4684 * sizeof (struct font_info)));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4685 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4686
8291
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4687 /* 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
4688 full_name = 0;
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4689 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
4690 {
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4691 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
4692 = 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
4693 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
4694 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4695 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
4696 (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
4697 char *p = name;
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4698 int dashes = 0;
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4699
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4700 /* 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
4701 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
4702 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
4703 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
4704 stored in them. */
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4705 while (*p)
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4706 {
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4707 if (*p == '-')
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4708 dashes++;
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4709 p++;
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4710 }
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4711
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4712 if (dashes >= 13)
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4713 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
4714
c84536ef5fa9 (x_new_font): Don't keep looping after the FONT property.
Richard M. Stallman <rms@gnu.org>
parents: 9446
diff changeset
4715 break;
8964
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4716 }
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4717
8291
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4718 XFree (atom);
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4719 }
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4720
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4721 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
4722 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
4723 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
4724 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
4725 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
4726 else
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4727 FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].full_name = FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].name;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4728 f->display.x->font = FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].font = font;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4729 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
4730
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
4731 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
4732 fontname = full_name;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4733 }
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4734
9167
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
4735 /* 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
4736 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
4737 {
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
4738 int wid = FONT_WIDTH (f->display.x->font);
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
4739 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
4740 }
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
4741 else
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
4742 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
4743
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4744 /* 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
4745 if (FRAME_X_WINDOW (f) != 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4746 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4747 XSetFont (FRAME_X_DISPLAY (f), f->display.x->normal_gc,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4748 f->display.x->font->fid);
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4749 XSetFont (FRAME_X_DISPLAY (f), f->display.x->reverse_gc,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4750 f->display.x->font->fid);
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4751 XSetFont (FRAME_X_DISPLAY (f), f->display.x->cursor_gc,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4752 f->display.x->font->fid);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4753
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
4754 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
4755 x_set_window_size (f, 0, f->width, f->height);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4756 }
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
4757 else
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
4758 /* 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
4759 there are no faces yet, so this font's height is the line height. */
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
4760 f->display.x->line_height = FONT_HEIGHT (f->display.x->font);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4761
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4762 {
6521
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
4763 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
4764
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
4765 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
4766
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4767 /* 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
4768 we actually retain comes from XLoadQueryFont. */
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4769 XFreeFontNames (font_names);
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4770
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4771 return lispy_name;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4772 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4773 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4774
7264
a701bffa0f9d (x_calc_absolute_position): Use size_hint_flags.
Richard M. Stallman <rms@gnu.org>
parents: 7262
diff changeset
4775 x_calc_absolute_position (f)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4776 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4777 {
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4778 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
4779 int win_x = 0, win_y = 0;
7264
a701bffa0f9d (x_calc_absolute_position): Use size_hint_flags.
Richard M. Stallman <rms@gnu.org>
parents: 7262
diff changeset
4780 int flags = f->display.x->size_hint_flags;
11896
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4781 int this_window;
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4782
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4783 #ifdef USE_X_TOOLKIT
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4784 this_window = XtWindow (f->display.x->widget);
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4785 #else
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4786 this_window = FRAME_X_WINDOW (f);
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4787 #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
4788
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4789 /* 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
4790 the inner window, with respect to the outer window. */
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4791 if (f->display.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
4792 {
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4793 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
4794 XTranslateCoordinates (FRAME_X_DISPLAY (f),
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4795
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4796 /* From-window, to-window. */
11896
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4797 this_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
4798 f->display.x->parent_desc,
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4799
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4800 /* 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
4801 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
4802
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4803 /* 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
4804 &child);
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4805 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
4806 }
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4807
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4808 /* 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
4809 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
4810 if (flags & XNegative)
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4811 f->display.x->left_pos = (FRAME_X_DISPLAY_INFO (f)->width
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
4812 - 2 * f->display.x->border_width - win_x
3890
ab295012a818 * xterm.c (XTread_socket): Remove #if 0''s around code which tests
Jim Blandy <jimb@redhat.com>
parents: 3883
diff changeset
4813 - PIXEL_WIDTH (f)
ab295012a818 * xterm.c (XTread_socket): Remove #if 0''s around code which tests
Jim Blandy <jimb@redhat.com>
parents: 3883
diff changeset
4814 + f->display.x->left_pos);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4815
7262
68fc80bf10df (x_wm_set_size_hint): Don't try to handle negative positions.
Richard M. Stallman <rms@gnu.org>
parents: 7210
diff changeset
4816 if (flags & YNegative)
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4817 f->display.x->top_pos = (FRAME_X_DISPLAY_INFO (f)->height
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
4818 - 2 * f->display.x->border_width - win_y
3890
ab295012a818 * xterm.c (XTread_socket): Remove #if 0''s around code which tests
Jim Blandy <jimb@redhat.com>
parents: 3883
diff changeset
4819 - PIXEL_HEIGHT (f)
11896
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4820 - (FRAME_EXTERNAL_MENU_BAR (f)
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4821 ? f->display.x->menubar_height : 0)
3890
ab295012a818 * xterm.c (XTread_socket): Remove #if 0''s around code which tests
Jim Blandy <jimb@redhat.com>
parents: 3883
diff changeset
4822 + f->display.x->top_pos);
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4823 /* 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
4824 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
4825 so the flags should correspond. */
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4826 f->display.x->size_hint_flags &= ~ (XNegative | YNegative);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4827 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4828
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4829 /* 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
4830 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
4831 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
4832 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
4833 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
4834
6934
e0ab4f59004e (dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents: 6883
diff changeset
4835 x_set_offset (f, xoff, yoff, change_gravity)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4836 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4837 register int xoff, yoff;
6934
e0ab4f59004e (dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents: 6883
diff changeset
4838 int change_gravity;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4839 {
11901
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4840 int modified_top, modified_left;
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4841
11988
a1ce6f699967 (x_set_offset): Distinguish CHANGE_GRAVITY < 0 case.
Karl Heuer <kwzh@gnu.org>
parents: 11953
diff changeset
4842 if (change_gravity > 0)
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4843 {
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4844 f->display.x->top_pos = yoff;
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4845 f->display.x->left_pos = xoff;
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4846 f->display.x->size_hint_flags &= ~ (XNegative | YNegative);
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4847 if (xoff < 0)
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4848 f->display.x->size_hint_flags |= XNegative;
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4849 if (yoff < 0)
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4850 f->display.x->size_hint_flags |= YNegative;
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4851 f->display.x->win_gravity = NorthWestGravity;
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
4852 }
7264
a701bffa0f9d (x_calc_absolute_position): Use size_hint_flags.
Richard M. Stallman <rms@gnu.org>
parents: 7262
diff changeset
4853 x_calc_absolute_position (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4854
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4855 BLOCK_INPUT;
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
4856 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
4857
11901
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4858 /* 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
4859 when the frame is already visible, but experiment says we do. */
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4860 modified_left = f->display.x->left_pos;
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4861 modified_top = f->display.x->top_pos;
11988
a1ce6f699967 (x_set_offset): Distinguish CHANGE_GRAVITY < 0 case.
Karl Heuer <kwzh@gnu.org>
parents: 11953
diff changeset
4862 if (change_gravity != 0)
11901
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4863 {
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4864 modified_left += f->display.x->border_width;
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4865 modified_top += f->display.x->border_width;
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4866 }
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4867
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4868 #ifdef 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
4869 XMoveWindow (FRAME_X_DISPLAY (f), XtWindow (f->display.x->widget),
11901
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
4870 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
4871 #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
4872 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
4873 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
4874 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4875 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4876 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4877
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4878 /* 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
4879 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
4880 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
4881 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
4882
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4883 x_set_window_size (f, change_gravity, cols, rows)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4884 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
4885 int change_gravity;
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4886 int cols, rows;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4887 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4888 int pixelwidth, pixelheight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4889 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4890
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
4891 #ifdef USE_X_TOOLKIT
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4892 BLOCK_INPUT;
7415
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
4893 {
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
4894 /* 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
4895 call to XtSetValues within EmacsFrameSetCharSize.
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
4896 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
4897 figure out a correct fix. Can anyone else tell me? -- rms. */
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
4898 int xpos = f->display.x->widget->core.x;
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
4899 int ypos = f->display.x->widget->core.y;
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
4900 EmacsFrameSetCharSize (f->display.x->edit_widget, cols, rows);
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
4901 f->display.x->widget->core.x = xpos;
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
4902 f->display.x->widget->core.y = ypos;
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
4903 }
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
4904 UNBLOCK_INPUT;
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4905
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
4906 #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
4907
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4908 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4909
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4910 check_frame_size (f, &rows, &cols);
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4911 f->display.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
4912 = (!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
4913 ? 0
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
4914 : 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
4915 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f)
9167
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
4916 : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->display.x->font)));
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4917 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
4918 pixelheight = CHAR_TO_PIXEL_HEIGHT (f, rows);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4919
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
4920 f->display.x->win_gravity = NorthWestGravity;
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
4921 x_wm_set_size_hint (f, (long) 0, 0);
8781
98741404d3e0 Delete X11 conditionals.
Richard M. Stallman <rms@gnu.org>
parents: 8724
diff changeset
4922
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4923 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
4924 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
4925 pixelwidth, pixelheight);
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4926
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4927 /* 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
4928 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
4929 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
4930 ConfigureNotify event gets here.
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4931
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4932 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
4933 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
4934 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
4935 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
4936 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
4937 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
4938 PIXEL_WIDTH (f) = pixelwidth;
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4939 PIXEL_HEIGHT (f) = pixelheight;
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4940
7651
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
4941 /* 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
4942 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
4943 || 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
4944 {
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
4945 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
4946 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
4947 }
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
4948
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4949 /* We've set {FRAME,PIXEL}_{WIDTH,HEIGHT} to the values we hope to
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4950 receive in the ConfigureNotify event; if we get what we asked
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4951 for, then the event won't cause the screen to become garbaged, so
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4952 we have to make sure to do it here. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4953 SET_FRAME_GARBAGED (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4954
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4955 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4956 UNBLOCK_INPUT;
5686
0c351de98a26 (x_set_window_size): Add USE_X_TOOLKIT conditional. Call EmacsFrameSetCharSize and return.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5685
diff changeset
4957 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4958 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4959
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
4960 /* Mouse warping. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4961
7026
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
4962 void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4963 x_set_mouse_position (f, x, y)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4964 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4965 int x, y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4966 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4967 int pix_x, pix_y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4968
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4969 pix_x = CHAR_TO_PIXEL_COL (f, x) + FONT_WIDTH (f->display.x->font) / 2;
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
4970 pix_y = CHAR_TO_PIXEL_ROW (f, y) + f->display.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
4971
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4972 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
4973 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
4974
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4975 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
4976 if (pix_y > PIXEL_HEIGHT (f)) pix_y = PIXEL_HEIGHT (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4977
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4978 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4979
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4980 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
4981 0, 0, 0, 0, pix_x, pix_y);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4982 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4983 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4984
7026
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
4985 /* 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
4986
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
4987 void
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
4988 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
4989 struct frame *f;
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
4990 int pix_x, pix_y;
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
4991 {
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
4992 BLOCK_INPUT;
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
4993
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4994 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
4995 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
4996 UNBLOCK_INPUT;
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
4997 }
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
4998
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
4999 /* focus shifting, raising and lowering. */
7026
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5000
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5001 x_focus_on_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5002 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5003 {
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
5004 #if 0 /* This proves to be unpleasant. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5005 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
5006 #endif
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5007 #if 0
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5008 /* I don't think that the ICCCM allows programs to do things like this
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5009 without the interaction of the window manager. Whatever you end up
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5010 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
5011 XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5012 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
5013 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5014 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5015
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5016 x_unfocus_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5017 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5018 {
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5019 #if 0
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5020 /* 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
5021 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
5022 XSetInputFocus (FRAME_X_DISPLAY (f), PointerRoot,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5023 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
5024 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5025 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5026
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5027 /* Raise frame F. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5028
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5029 x_raise_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5030 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5031 {
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5032 if (f->async_visible)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5033 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5034 BLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5035 #ifdef 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
5036 XRaiseWindow (FRAME_X_DISPLAY (f), XtWindow (f->display.x->widget));
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5037 #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
5038 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
5039 #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
5040 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5041 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5042 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5043 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5044
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5045 /* Lower frame F. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5046
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5047 x_lower_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5048 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5049 {
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5050 if (f->async_visible)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5051 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5052 BLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5053 #ifdef 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
5054 XLowerWindow (FRAME_X_DISPLAY (f), XtWindow (f->display.x->widget));
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5055 #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
5056 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
5057 #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
5058 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5059 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5060 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5061 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5062
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5063 static void
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5064 XTframe_raise_lower (f, raise)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5065 FRAME_PTR f;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5066 int raise;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5067 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5068 if (raise)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5069 x_raise_frame (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5070 else
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5071 x_lower_frame (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5072 }
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5073
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5074 /* Change of visibility. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5075
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5076 x_make_frame_visible (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5077 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5078 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5079 int mask;
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5080 Lisp_Object type;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5081
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5082 BLOCK_INPUT;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5083
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5084 type = x_icon_type (f);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5085 if (!NILP (type))
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5086 x_bitmap_icon (f, type);
9446
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5087
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5088 if (! FRAME_VISIBLE_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5089 {
7738
a810335742bb (x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents: 7706
diff changeset
5090 if (! FRAME_ICONIFIED_P (f))
a810335742bb (x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents: 7706
diff changeset
5091 x_set_offset (f, f->display.x->left_pos, f->display.x->top_pos, 0);
6934
e0ab4f59004e (dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents: 6883
diff changeset
5092
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5093 if (! EQ (Vx_no_window_manager, Qt))
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5094 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
5095 #ifdef USE_X_TOOLKIT
7167
2fa74c48e4e5 (x_make_frame_visible): Use XtMapWidget, not XtPopup.
Richard M. Stallman <rms@gnu.org>
parents: 7128
diff changeset
5096 /* This was XtPopup, but that did nothing for an iconified frame. */
2fa74c48e4e5 (x_make_frame_visible): Use XtMapWidget, not XtPopup.
Richard M. Stallman <rms@gnu.org>
parents: 7128
diff changeset
5097 XtMapWidget (f->display.x->widget);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5098 #else /* not USE_X_TOOLKIT */
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5099 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
5100 #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
5101 #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
5102 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
5103 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
5104 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
5105 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
5106 #endif
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5107 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5108
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5109 XFlush (FRAME_X_DISPLAY (f));
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5110
7959
224440646fa7 (make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents: 7935
diff changeset
5111 /* 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
5112 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
5113 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
5114 {
224440646fa7 (make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents: 7935
diff changeset
5115 Lisp_Object frame;
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5116 int count = input_signal_count;
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5117
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5118 /* This must come after we set COUNT. */
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5119 UNBLOCK_INPUT;
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5120
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
5121 XSETFRAME (frame, f);
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5122
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5123 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
5124 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5125 x_sync (f);
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5126 /* Once we have handled input events,
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5127 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
5128 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
5129 Some window managers make their own decisions
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5130 about visibility. */
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5131 if (input_signal_count != count)
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5132 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
5133 /* 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
5134 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
5135 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
5136 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
5137 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
5138 if (input_polling_used ())
8652
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
5139 {
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
5140 /* It could be confusing if a real alarm arrives while processing
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
5141 the fake one. Turn it off and let the handler reset it. */
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
5142 alarm (0);
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
5143 input_poll_signal ();
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
5144 }
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5145 /* Once we have handled input events,
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5146 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
5147 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
5148 Some window managers make their own decisions
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5149 about visibility. */
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5150 if (input_signal_count != count)
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5151 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
5152 }
7959
224440646fa7 (make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents: 7935
diff changeset
5153 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
5154 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5155 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5156
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5157 /* Change from mapped state to withdrawn state. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5158
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5159 /* Make the frame visible (mapped and not iconified). */
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5160
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5161 x_make_frame_invisible (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5162 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5163 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5164 int mask;
7602
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5165 Window window;
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5166
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5167 #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
5168 /* Use the frame's outermost window, not the one we normally draw on. */
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5169 window = XtWindow (f->display.x->widget);
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5170 #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
5171 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
5172 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5173
3284
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5174 /* 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
5175 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
5176 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
5177
6983
b18e5c09d7c3 (XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents: 6941
diff changeset
5178 #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
5179 if (! f->async_visible && ! f->async_iconified)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5180 return;
6983
b18e5c09d7c3 (XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents: 6941
diff changeset
5181 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5182
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5183 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
5184
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5185 /* 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
5186 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
5187 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
5188 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
5189 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
5190 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
5191
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5192 #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
5193
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5194 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
5195 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
5196 {
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5197 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
5198 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
5199 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5200 #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
5201
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5202 /* Tell the window manager what we're going to do. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5203 if (! EQ (Vx_no_window_manager, Qt))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5204 {
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5205 XEvent unmap;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5206
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5207 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
5208 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
5209 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
5210 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
5211 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
5212 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
5213 False,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5214 SubstructureRedirectMask|SubstructureNotifyMask,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5215 &unmap))
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5216 {
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5217 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
5218 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
5219 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5220 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5221
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5222 /* 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
5223 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
5224 #endif /* ! defined (HAVE_X11R4) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5225
6983
b18e5c09d7c3 (XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents: 6941
diff changeset
5226 /* 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
5227 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
5228 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
5229 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
5230 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
5231 f->visible = 0;
b18e5c09d7c3 (XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents: 6941
diff changeset
5232 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
5233 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
5234 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
5235
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5236 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
5237
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5238 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5239 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5240
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5241 /* Change window state from mapped to iconified. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5242
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5243 x_iconify_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5244 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5245 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5246 int mask;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5247 int result;
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5248 Lisp_Object type;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5249
3284
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5250 /* 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
5251 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
5252 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
5253
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5254 if (f->async_iconified)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5255 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5256
9446
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5257 BLOCK_INPUT;
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5258
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5259 type = x_icon_type (f);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5260 if (!NILP (type))
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5261 x_bitmap_icon (f, type);
9446
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5262
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5263 #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
5264
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5265 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
5266 {
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5267 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
5268 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
5269 /* This was XtPopup, but that did nothing for an iconified frame. */
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5270 XtMapWidget (f->display.x->widget);
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5271 UNBLOCK_INPUT;
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5272 return;
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5273 }
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5274
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5275 result = XIconifyWindow (FRAME_X_DISPLAY (f),
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5276 XtWindow (f->display.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
5277 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
5278 UNBLOCK_INPUT;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5279
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5280 if (!result)
7602
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5281 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
5282
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5283 f->async_iconified = 1;
5740
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5284
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5285 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
5286 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
5287 UNBLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5288 #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
5289
7738
a810335742bb (x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents: 7706
diff changeset
5290 /* 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
5291 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
5292 if (! FRAME_VISIBLE_P (f) && !FRAME_ICONIFIED_P (f))
a810335742bb (x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents: 7706
diff changeset
5293 x_set_offset (f, f->display.x->left_pos, f->display.x->top_pos, 0);
a810335742bb (x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents: 7706
diff changeset
5294
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5295 /* 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
5296 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
5297
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5298 /* 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
5299 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
5300 {
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5301 XEvent message;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
5302
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5303 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
5304 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
5305 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
5306 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
5307 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
5308
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5309 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
5310 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
5311 False,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5312 SubstructureRedirectMask | SubstructureNotifyMask,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5313 &message))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5314 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5315 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
5316 error ("Can't notify window manager of iconification");
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5317 }
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5318 }
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5319
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
5320 /* 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
5321 IconicState. */
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5322 x_wm_set_window_state (f, IconicState);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5323
4304
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5324 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
5325 {
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5326 /* 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
5327 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
5328 }
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5329
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5330 f->async_iconified = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5331
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5332 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5333 UNBLOCK_INPUT;
5740
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5334 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5335 }
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5336
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5337 /* 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
5338
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5339 x_destroy_window (f)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5340 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5341 {
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5342 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
5343
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5344 BLOCK_INPUT;
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5345
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5346 if (f->display.x->icon_desc != 0)
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5347 XDestroyWindow (FRAME_X_DISPLAY (f), f->display.x->icon_desc);
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5348 XDestroyWindow (FRAME_X_DISPLAY (f), f->display.x->window_desc);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5349 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5350 XtDestroyWidget (f->display.x->widget);
5898
105c99071e9b (x_destroy_window) [USE_X_TOOLKIT]: Call free_frame_menubar.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5872
diff changeset
5351 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
5352 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5353
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
5354 free_frame_faces (f);
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5355 XFlush (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
5356
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
5357 xfree (f->display.x);
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5358 f->display.x = 0;
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
5359 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
5360 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
5361 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
5362 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
5363 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
5364 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
5365
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5366 dpyinfo->reference_count--;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5367
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5368 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
5369 {
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5370 dpyinfo->mouse_face_beg_row
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5371 = dpyinfo->mouse_face_beg_col = -1;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5372 dpyinfo->mouse_face_end_row
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5373 = dpyinfo->mouse_face_end_col = -1;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5374 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
5375 }
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5376
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5377 UNBLOCK_INPUT;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5378 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5379
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5380 /* Setting window manager hints. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5381
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5382 /* 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
5383 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
5384 that the window now has.
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5385 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
5386 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
5387
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5388 x_wm_set_size_hint (f, flags, user_position)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5389 struct frame *f;
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5390 long flags;
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5391 int user_position;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5392 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5393 XSizeHints size_hints;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5394
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5395 #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
5396 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
5397 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
5398 Dimension widget_width, widget_height;
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5399 Window window = XtWindow (f->display.x->widget);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5400 #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
5401 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
5402 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5403
7187
ca0102511d80 (x_wm_set_size_hint): Don't set PMaxSize.
Richard M. Stallman <rms@gnu.org>
parents: 7169
diff changeset
5404 /* 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
5405 size_hints.flags = PResizeInc | PMinSize /* | PMaxSize */;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5406
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5407 flexlines = f->height;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5408
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5409 size_hints.x = f->display.x->left_pos;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5410 size_hints.y = f->display.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
5411
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
5412 #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
5413 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
5414 XtSetArg (al[ac], XtNheight, &widget_height); ac++;
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5415 XtGetValues (f->display.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
5416 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
5417 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
5418 #else /* not USE_X_TOOLKIT */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5419 size_hints.height = PIXEL_HEIGHT (f);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5420 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
5421 #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
5422
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5423 size_hints.width_inc = FONT_WIDTH (f->display.x->font);
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
5424 size_hints.height_inc = f->display.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
5425 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
5426 = 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
5427 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
5428 = 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
5429
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5430 /* Calculate the base and minimum sizes.
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5431
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5432 (When we use the X toolkit, we don't do it here.
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5433 Instead we copy the values that the widgets are using, below.) */
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5434 #ifndef USE_X_TOOLKIT
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5435 {
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
5436 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
5437 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
5438
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5439 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
5440 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
5441
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5442 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
5443
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5444 /* 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
5445 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
5446 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
5447 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
5448 zero-row, zero-column frame.
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
5449
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5450 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
5451 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
5452 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
5453
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5454 #ifdef HAVE_X11R4
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5455 size_hints.flags |= PBaseSize;
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5456 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
5457 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
5458 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
5459 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
5460 #else
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5461 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
5462 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
5463 #endif
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5464 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5465
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5466 /* 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
5467 if (flags)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5468 {
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5469 size_hints.flags |= flags;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5470 goto no_read;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5471 }
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5472 #endif /* not USE_X_TOOLKIT */
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5473
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5474 {
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5475 XSizeHints hints; /* Sometimes I hate X Windows... */
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5476 long supplied_return;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5477 int value;
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5478
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5479 #ifdef HAVE_X11R4
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5480 value = XGetWMNormalHints (FRAME_X_DISPLAY (f), window, &hints,
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5481 &supplied_return);
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5482 #else
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5483 value = XGetNormalHints (FRAME_X_DISPLAY (f), window, &hints);
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5484 #endif
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5485
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5486 #ifdef USE_X_TOOLKIT
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5487 size_hints.base_height = hints.base_height;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5488 size_hints.base_width = hints.base_width;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5489 size_hints.min_height = hints.min_height;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5490 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
5491 #endif
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
5492
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5493 if (flags)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5494 size_hints.flags |= flags;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5495 else
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5496 {
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5497 if (value == 0)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5498 hints.flags = 0;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5499 if (hints.flags & PSize)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5500 size_hints.flags |= PSize;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5501 if (hints.flags & PPosition)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5502 size_hints.flags |= PPosition;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5503 if (hints.flags & USPosition)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5504 size_hints.flags |= USPosition;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5505 if (hints.flags & USSize)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5506 size_hints.flags |= USSize;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5507 }
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5508 }
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5509
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5510 no_read:
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5511
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5512 #ifdef PWinGravity
6934
e0ab4f59004e (dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents: 6883
diff changeset
5513 size_hints.win_gravity = f->display.x->win_gravity;
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5514 size_hints.flags |= PWinGravity;
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5515
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5516 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
5517 {
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5518 size_hints.flags &= ~ PPosition;
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5519 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
5520 }
4777
21ed9c9bb210 (w_wn_set_size_hint): Make recent window gravity addition
Brian Fox <bfox@gnu.org>
parents: 4696
diff changeset
5521 #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
5522
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
5523 #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
5524 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
5525 #else
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5526 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
5527 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5528 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5529
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5530 /* Used for IconicState or NormalState */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5531 x_wm_set_window_state (f, state)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5532 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5533 int state;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5534 {
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5535 #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
5536 Arg al[1];
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5537
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5538 XtSetArg (al[0], XtNinitialState, state);
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5539 XtSetValues (f->display.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
5540 #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
5541 Window window = FRAME_X_WINDOW (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5542
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5543 f->display.x->wm_hints.flags |= StateHint;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5544 f->display.x->wm_hints.initial_state = state;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5545
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5546 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->display.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
5547 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5548 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5549
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
5550 x_wm_set_icon_pixmap (f, pixmap_id)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5551 struct frame *f;
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
5552 int pixmap_id;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5553 {
7806
ef7a60d59543 (x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents: 7801
diff changeset
5554 #ifdef USE_X_TOOLKIT
ef7a60d59543 (x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents: 7801
diff changeset
5555 Window window = XtWindow (f->display.x->widget);
ef7a60d59543 (x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents: 7801
diff changeset
5556 #else
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5557 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
5558 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5559
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
5560 if (pixmap_id > 0)
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5561 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5562 Pixmap icon_pixmap = x_bitmap_pixmap (f, pixmap_id);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5563 f->display.x->wm_hints.icon_pixmap = icon_pixmap;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5564 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5565 else
12079
f6e8c75cca52 (x_wm_set_icon_pixmap): Set IconPixmapHint in both cases.
Karl Heuer <kwzh@gnu.org>
parents: 12074
diff changeset
5566 f->display.x->wm_hints.icon_pixmap = None;
f6e8c75cca52 (x_wm_set_icon_pixmap): Set IconPixmapHint in both cases.
Karl Heuer <kwzh@gnu.org>
parents: 12074
diff changeset
5567
f6e8c75cca52 (x_wm_set_icon_pixmap): Set IconPixmapHint in both cases.
Karl Heuer <kwzh@gnu.org>
parents: 12074
diff changeset
5568 f->display.x->wm_hints.flags |= IconPixmapHint;
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5569 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->display.x->wm_hints);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5570 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5571
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5572 x_wm_set_icon_position (f, icon_x, icon_y)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5573 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5574 int icon_x, icon_y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5575 {
7806
ef7a60d59543 (x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents: 7801
diff changeset
5576 #ifdef USE_X_TOOLKIT
ef7a60d59543 (x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents: 7801
diff changeset
5577 Window window = XtWindow (f->display.x->widget);
ef7a60d59543 (x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents: 7801
diff changeset
5578 #else
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5579 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
5580 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5581
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5582 f->display.x->wm_hints.flags |= IconPositionHint;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5583 f->display.x->wm_hints.icon_x = icon_x;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5584 f->display.x->wm_hints.icon_y = icon_y;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5585
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5586 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->display.x->wm_hints);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5587 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5588
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5589
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5590 /* Initialization. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5591
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5592 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5593 static XrmOptionDescRec emacs_options[] = {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5594 {"-geometry", ".geometry", XrmoptionSepArg, NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5595 {"-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
5596
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5597 {"-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
5598 XrmoptionSepArg, NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5599 {"-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
5600
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5601 {"-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
5602 {"-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
5603 {"-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
5604 {"-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
5605 {"-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
5606 {"-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
5607 {"-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
5608 };
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5609 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5610
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5611 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
5612
11015
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5613 #ifdef MULTI_KBOARD
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5614 /* Test whether two display-name strings agree up to the dot that separates
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5615 the screen number from the server number. */
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5616 static int
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5617 same_x_server (name1, name2)
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5618 char *name1, *name2;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5619 {
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5620 int seen_colon = 0;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5621 for (; *name1 != '\0' && *name1 == *name2; name1++, name2++)
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5622 {
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5623 if (*name1 == ':')
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5624 seen_colon++;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5625 if (seen_colon && *name1 == '.')
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5626 return 1;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5627 }
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5628 return (seen_colon
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5629 && (*name1 == '.' || *name1 == '\0')
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5630 && (*name2 == '.' || *name2 == '\0'));
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5631 }
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5632 #endif
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5633
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5634 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
5635 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
5636 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
5637 char *xrm_option;
10e818a0248a (x_term_init): New args xrm_option and resource_string.
Richard M. Stallman <rms@gnu.org>
parents: 7738
diff changeset
5638 char *resource_name;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5639 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5640 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5641 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
5642 int connection;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5643 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
5644 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
5645 XrmDatabase xrdb;
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5646
11997
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5647 BLOCK_INPUT;
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5648
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5649 if (!x_initialized)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5650 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5651 x_initialize ();
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5652 x_initialized = 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5653 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5654
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5655 #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
5656 /* 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
5657 errors with X11R5:
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
5658 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
5659 on protocol request 18skiloaf.
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
5660 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
5661 #ifdef HAVE_X11XTR6
9446
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5662 XtSetLanguageProc (NULL, NULL, NULL);
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5663 #endif
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5664
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5665 {
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5666 int argc = 0;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5667 char *argv[3];
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5668
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5669 argv[0] = "";
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5670 argc = 1;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5671 if (xrm_option)
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5672 {
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5673 argv[argc++] = "-xrm";
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5674 argv[argc++] = xrm_option;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5675 }
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5676 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
5677 resource_name, EMACS_CLASS,
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5678 emacs_options, XtNumber (emacs_options),
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5679 &argc, argv);
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5680 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5681
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5682 #else /* not USE_X_TOOLKIT */
9446
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5683 #ifdef HAVE_X11R5
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5684 XSetLocaleModifiers ("");
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5685 #endif
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5686 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
5687 #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
5688
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5689 /* Detect failure. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5690 if (dpy == 0)
11997
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5691 {
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5692 UNBLOCK_INPUT;
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5693 return 0;
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5694 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5695
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5696 /* 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
5697
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5698 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
5699
11015
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5700 #ifdef MULTI_KBOARD
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5701 {
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5702 struct x_display_info *share;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5703 Lisp_Object tail;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5704
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5705 for (share = x_display_list, tail = x_display_name_list; share;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5706 share = share->next, tail = XCONS (tail)->cdr)
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5707 if (same_x_server (XSTRING (XCONS (XCONS (tail)->car)->car)->data,
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5708 XSTRING (display_name)->data))
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5709 break;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5710 if (share)
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5711 dpyinfo->kboard = share->kboard;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5712 else
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5713 {
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5714 dpyinfo->kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5715 init_kboard (dpyinfo->kboard);
11807
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5716 if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound))
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5717 {
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5718 char *vendor = ServerVendor (dpy);
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5719 dpyinfo->kboard->Vsystem_key_alist
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5720 = call1 (Qvendor_specific_keysyms,
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5721 build_string (vendor ? vendor : ""));
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5722 }
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5723
11015
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5724 dpyinfo->kboard->next_kboard = all_kboards;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5725 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
5726 /* 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
5727 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
5728 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
5729 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
5730 current_kboard = dpyinfo->kboard;
11015
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5731 }
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5732 dpyinfo->kboard->reference_count++;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5733 }
10652
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
5734 #endif
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
5735
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5736 /* 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
5737 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
5738 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
5739
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5740 /* 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
5741 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
5742 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
5743 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
5744
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5745 dpyinfo->display = dpy;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5746
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5747 #if 0
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5748 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
5749 #endif /* ! 0 */
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5750
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5751 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
5752 = (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
5753 + 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
5754 + 2);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5755 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
5756 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
5757
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
5758 /* 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
5759 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
5760
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
5761 /* 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
5762 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
5763 = 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
5764
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5765 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
5766 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
5767 #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
5768 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
5769 #else
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5770 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
5771 #endif
11162
95b70c82ec51 (x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents: 11122
diff changeset
5772 /* 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
5773 all versions. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5774 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
5775
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5776 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
5777 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
5778 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
5779 &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
5780 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
5781 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
5782 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
5783 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
5784 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
5785 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
5786 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
5787 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
5788 dpyinfo->bitmaps = 0;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5789 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
5790 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
5791 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
5792 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
5793 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
5794 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
5795 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
5796 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
5797 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
5798 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
5799 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
5800 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
5801 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
5802 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
5803
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5804 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
5805 = 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
5806 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
5807 = 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
5808 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
5809 = 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
5810 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
5811 = 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
5812 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
5813 = 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
5814 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
5815 = 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
5816 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
5817 = 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
5818 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
5819 = 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
5820 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
5821 = 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
5822 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
5823 = 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
5824 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
5825 = 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
5826 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
5827 = 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
5828 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
5829 = 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
5830 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
5831 = 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
5832 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
5833 = 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
5834 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
5835 = 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
5836 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
5837 = 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
5838 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
5839 = 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
5840
11162
95b70c82ec51 (x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents: 11122
diff changeset
5841 dpyinfo->cut_buffers_initialized = 0;
95b70c82ec51 (x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents: 11122
diff changeset
5842
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5843 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
5844 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
5845
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9565
diff changeset
5846 #ifdef subprocesses
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9565
diff changeset
5847 /* 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
5848 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
5849 add_keyboard_wait_descriptor (connection);
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9565
diff changeset
5850 #endif
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5851
4147
c6657758fb6f * xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents: 3951
diff changeset
5852 #ifndef F_SETOWN_BUG
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5853 #ifdef F_SETOWN
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5854 #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
5855 /* 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
5856 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
5857 #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
5858 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
5859 #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
5860 #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
5861 #endif /* F_SETOWN_BUG */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5862
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5863 #ifdef SIGIO
11994
b4dd8ca308dd (x_term_init): Call init_sigio only if interrupt_input.
Karl Heuer <kwzh@gnu.org>
parents: 11988
diff changeset
5864 if (interrupt_input)
b4dd8ca308dd (x_term_init): Call init_sigio only if interrupt_input.
Karl Heuer <kwzh@gnu.org>
parents: 11988
diff changeset
5865 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
5866 #endif /* ! defined (SIGIO) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5867
11997
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5868 UNBLOCK_INPUT;
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5869
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5870 return dpyinfo;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5871 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5872
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5873 /* 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
5874 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
5875
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5876 void
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5877 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
5878 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
5879 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5880 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
5881
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5882 /* 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
5883 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
5884 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
5885 && 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
5886 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
5887 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5888 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5889 Lisp_Object tail;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5890
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5891 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
5892 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
5893 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5894 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
5895 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
5896 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5897 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
5898 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5899 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5900 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
5901 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5902 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5903
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5904 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
5905 x_display_list = dpyinfo->next;
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5906 else
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 struct x_display_info *tail;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5909
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5910 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
5911 if (tail->next == dpyinfo)
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5912 tail->next = tail->next->next;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5913 }
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 #ifndef USE_X_TOOLKIT
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5916 /* I'm told Xt does this itself. */
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5917 XrmDestroyDatabase (dpyinfo->xrdb);
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5918 #endif
11015
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5919 #ifdef MULTI_KBOARD
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5920 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
5921 delete_kboard (dpyinfo->kboard);
10652
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
5922 #endif
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
5923 xfree (dpyinfo->font_table);
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
5924 xfree (dpyinfo->x_id_name);
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
5925 xfree (dpyinfo);
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5926 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5927
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5928 /* 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
5929
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5930 x_initialize ()
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5931 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5932 clear_frame_hook = XTclear_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5933 clear_end_of_line_hook = XTclear_end_of_line;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5934 ins_del_lines_hook = XTins_del_lines;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5935 change_line_highlight_hook = XTchange_line_highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5936 insert_glyphs_hook = XTinsert_glyphs;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5937 write_glyphs_hook = XTwrite_glyphs;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5938 delete_glyphs_hook = XTdelete_glyphs;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5939 ring_bell_hook = XTring_bell;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5940 reset_terminal_modes_hook = XTreset_terminal_modes;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5941 set_terminal_modes_hook = XTset_terminal_modes;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5942 update_begin_hook = XTupdate_begin;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5943 update_end_hook = XTupdate_end;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5944 set_terminal_window_hook = XTset_terminal_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5945 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
5946 frame_up_to_date_hook = XTframe_up_to_date;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5947 cursor_to_hook = XTcursor_to;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5948 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
5949 mouse_position_hook = XTmouse_position;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5950 frame_rehighlight_hook = XTframe_rehighlight;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5951 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
5952 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
5953 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
5954 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
5955 judge_scroll_bars_hook = XTjudge_scroll_bars;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
5956
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5957 scroll_region_ok = 1; /* we'll scroll partial frames */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5958 char_ins_del_ok = 0; /* just as fast to write the line */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5959 line_ins_del_ok = 1; /* we'll just blt 'em */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5960 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
5961 memory_below_frame = 0; /* we don't remember what scrolls
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5962 off the bottom */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5963 baud_rate = 19200;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5964
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5965 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
5966
4476
e7de1b007447 (x_term_init): Set the hooks before we call Fset_input_mode.
Richard M. Stallman <rms@gnu.org>
parents: 4304
diff changeset
5967 /* 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
5968 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
5969
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5970 #ifdef USE_X_TOOLKIT
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5971 XtToolkitInitialize ();
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5972 Xt_app_con = XtCreateApplicationContext ();
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5973 #endif
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5974
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
5975 /* 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
5976 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
5977 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
5978 XSetIOErrorHandler (x_io_error_quitter);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5979
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5980 /* Disable Window Change signals; they are handled by X events. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5981 #ifdef SIGWINCH
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5982 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
5983 #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
5984
10743
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
5985 signal (SIGPIPE, x_connection_signal);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5986 }
395
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
5987
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
5988 void
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
5989 syms_of_xterm ()
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
5990 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5991 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
5992 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
5993
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
5994 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
5995 last_mouse_scroll_bar = Qnil;
11807
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5996
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5997 staticpro (&Qvendor_specific_keysyms);
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5998 Qvendor_specific_keysyms = intern ("vendor-specific-keysyms");
395
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
5999 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
6000 #endif /* ! defined (HAVE_X_WINDOWS) */