annotate src/xterm.c @ 14694:41de9b2640a1

(X_CONNECTION_LOCK_FLAG): New macro. (x_connection_close_if_hung): New subroutine, at the end of the file. Include X11/Xlibint.h only for this function. #undef bcopy, bzero, bcmp, min, max first. Define malloc and free to avoid type conflicts. (x_connection_signal): Use x_connection_close_if_hung.
author Richard M. Stallman <rms@gnu.org>
date Tue, 27 Feb 1996 02:33:15 +0000
parents e93656946a8c
children 78cb76d091af
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
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14165
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14165
diff changeset
19 Boston, MA 02111-1307, USA. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
21 /* Xt features made by Fred Pierresteguy. */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
22
2977
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
23 /* On 4.3 these lose if they come after xterm.h. */
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
24 /* On HP-UX 8.0 signal.h loses if it comes after config.h. */
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
25 /* Putting these at the beginning seems to be standard for other .c files. */
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
26 #include <signal.h>
ddcad1457cd5 Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents: 2958
diff changeset
27
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4683
diff changeset
28 #include <config.h>
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
7902
22b9aaaf0302 Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7870
diff changeset
30 #include <stdio.h>
22b9aaaf0302 Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7870
diff changeset
31
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
32 /* Need syssignal.h for various externs and definitions that may be required
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
33 by some configurations for calls to signal later in this source file. */
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
34 #include "syssignal.h"
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
35
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 #ifdef HAVE_X_WINDOWS
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 #include "lisp.h"
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
39 #include "blockinput.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 /* This may include sys/types.h, and that somehow loses
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 if this is not done before the other system files. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 #include "xterm.h"
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
44 #include <X11/cursorfont.h>
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
46 #ifndef USG
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 /* Load sys/types.h if not already loaded.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 In some systems loading it twice is suicidal. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 #ifndef makedev
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 #include <sys/types.h>
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
51 #endif /* makedev */
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
52 #endif /* USG */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 #ifdef BSD
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 #include <sys/ioctl.h>
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
56 #endif /* ! defined (BSD) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57
3355
e0c2e8a2ef75 (XTread_socket, case KeyPress) [HPUX]: Test IsModifiedKey.
Richard M. Stallman <rms@gnu.org>
parents: 3284
diff changeset
58 #include "systty.h"
555
e09a318cf838 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 517
diff changeset
59 #include "systime.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
61 #ifndef INCLUDED_FCNTL
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 #include <fcntl.h>
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
63 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 #include <ctype.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 #include <errno.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 #include <setjmp.h>
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 #include <sys/stat.h>
10366
5e8b43cd8e96 Don't include param.h.
Richard M. Stallman <rms@gnu.org>
parents: 10287
diff changeset
68 /* 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
69 /* #include <sys/param.h> */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
71 #include "frame.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 #include "dispextern.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 #include "termhooks.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 #include "termopts.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 #include "termchar.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 #if 0
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 #include "sink.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 #include "sinkmask.h"
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
79 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 #include "gnu.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 #include "disptab.h"
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 #include "buffer.h"
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
83 #include "window.h"
8652
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
84 #include "keyboard.h"
8848
48b3ac951c53 Add #include "intervals.h"
Karl Heuer <kwzh@gnu.org>
parents: 8781
diff changeset
85 #include "intervals.h"
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
87 #ifdef USE_X_TOOLKIT
5898
105c99071e9b (x_destroy_window) [USE_X_TOOLKIT]: Call free_frame_menubar.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5872
diff changeset
88 extern void free_frame_menubar ();
13507
9a9f459075af (HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents: 13363
diff changeset
89 extern FRAME_PTR x_menubar_window_to_frame ();
9a9f459075af (HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents: 13363
diff changeset
90 #if (XtSpecificationRelease >= 5) && !defined(NO_EDITRES)
9a9f459075af (HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents: 13363
diff changeset
91 #define HACK_EDITRES
6941
a914781ef58a (Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents: 6934
diff changeset
92 extern void _XEditResCheckMessages ();
13507
9a9f459075af (HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents: 13363
diff changeset
93 #endif /* not NO_EDITRES */
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
94 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
95
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
96 #ifndef USE_X_TOOLKIT
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
97 #define x_any_window_to_frame x_window_to_frame
6983
b18e5c09d7c3 (XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents: 6941
diff changeset
98 #define x_top_window_to_frame x_window_to_frame
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
99 #endif
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
100
7602
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
101 #ifdef USE_X_TOOLKIT
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
102 #include "widget.h"
7602
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
103 #ifndef XtNinitialState
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
104 #define XtNinitialState "initialState"
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
105 #endif
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
106 #endif
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
107
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
108 #ifdef HAVE_X11XTR6
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
109 /* So we can do setlocale. */
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
110 #include <locale.h>
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
111 #endif
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
112
14305
3cc44eaf9ebf (x_connection_signal): Explicitly check the thread interlock
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
113 #ifdef SOLARIS2
14694
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
114 #define X_CONNECTION_LOCK_FLAG XlibDisplayWriting
14305
3cc44eaf9ebf (x_connection_signal): Explicitly check the thread interlock
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
115 #endif
3cc44eaf9ebf (x_connection_signal): Explicitly check the thread interlock
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
116
14522
9cee3e7c6468 (min, max): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents: 14489
diff changeset
117 #ifndef min
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 #define min(a,b) ((a)<(b) ? (a) : (b))
14522
9cee3e7c6468 (min, max): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents: 14489
diff changeset
119 #endif
9cee3e7c6468 (min, max): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents: 14489
diff changeset
120 #ifndef max
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 #define max(a,b) ((a)>(b) ? (a) : (b))
14522
9cee3e7c6468 (min, max): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents: 14489
diff changeset
122 #endif
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
123
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
124 /* This is a chain of structures for all the X displays currently in use. */
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
125 struct x_display_info *x_display_list;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
127 /* This is a list of cons cells, each of the form (NAME . FONT-LIST-CACHE),
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
128 one for each element of x_display_list and in the same order.
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
129 NAME is the name of the frame.
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
130 FONT-LIST-CACHE records previous values returned by x-list-fonts. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
131 Lisp_Object x_display_name_list;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
132
2474
86c8a6e08fd4 Fix typo in comment delimiter.
Richard M. Stallman <rms@gnu.org>
parents: 2468
diff changeset
133 /* Frame being updated by update_frame. This is declared in term.c.
2468
35aa32e1a003 * xterm.c (updating_frame): Declare this extern instead of static,
Jim Blandy <jimb@redhat.com>
parents: 2439
diff changeset
134 This is set by update_begin and looked at by all the
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 XT functions. It is zero while not inside an update.
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
136 In that case, the XT functions assume that `selected_frame'
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
137 is the frame to apply to. */
2468
35aa32e1a003 * xterm.c (updating_frame): Declare this extern instead of static,
Jim Blandy <jimb@redhat.com>
parents: 2439
diff changeset
138 extern struct frame *updating_frame;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
139
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
140 /* This is a frame waiting to be autoraised, within XTread_socket. */
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
141 struct frame *pending_autoraise_frame;
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
142
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
143 #ifdef USE_X_TOOLKIT
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
144 /* The application context for Xt use. */
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
145 XtAppContext Xt_app_con;
12494
bfbe2490dbf0 (x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents: 12431
diff changeset
146
bfbe2490dbf0 (x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents: 12431
diff changeset
147 static String Xt_default_resources[] =
bfbe2490dbf0 (x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents: 12431
diff changeset
148 {
bfbe2490dbf0 (x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents: 12431
diff changeset
149 0
bfbe2490dbf0 (x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents: 12431
diff changeset
150 };
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
151 #endif
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
152
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 /* During an update, maximum vpos for ins/del line operations to affect. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 static int flexlines;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 /* During an update, nonzero if chars output now should be highlighted. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 static int highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 /* Nominal cursor position -- where to draw output.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 During an update, these are different from the cursor-box position. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 static int curs_x;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 static int curs_y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
167 /* Mouse movement.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
168
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
169 In order to avoid asking for motion events and then throwing most
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
170 of them away or busy-polling the server for mouse positions, we ask
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
171 the server for pointer motion hints. This means that we get only
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
172 one event per group of mouse movements. "Groups" are delimited by
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
173 other kinds of events (focus changes and button clicks, for
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
174 example), or by XQueryPointer calls; when one of these happens, we
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
175 get another MotionNotify event the next time the mouse moves. This
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
176 is at least as efficient as getting motion events when mouse
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
177 tracking is on, and I suspect only negligibly worse when tracking
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
178 is off.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
179
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
180 The silly O'Reilly & Associates Nutshell guides barely document
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
181 pointer motion hints at all (I think you have to infer how they
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
182 work from an example), and the description of XQueryPointer doesn't
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
183 mention that calling it causes you to get another motion hint from
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
184 the server, which is very important. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
185
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
186 /* Where the mouse was last time we reported a mouse event. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
187 static FRAME_PTR last_mouse_frame;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
188 static XRectangle last_mouse_glyph;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
189
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
190 /* The scroll bar in which the last X motion event occurred.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
191
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
192 If the last X motion event occurred in a scroll bar, we set this
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
193 so XTmouse_position can know whether to report a scroll bar motion or
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
194 an ordinary motion.
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
195
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
196 If the last X motion event didn't occur in a scroll bar, we set this
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
197 to Qnil, to tell XTmouse_position to return an ordinary motion event. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
198 static Lisp_Object last_mouse_scroll_bar;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
199
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
200 /* This is a hack. We would really prefer that XTmouse_position would
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
201 return the time associated with the position it returns, but there
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
202 doesn't seem to be any way to wrest the timestamp from the server
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
203 along with the position query. So, we just keep track of the time
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
204 of the last movement we received, and return that in hopes that
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
205 it's somewhat accurate. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
206 static Time last_mouse_movement_time;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
207
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
208 /* Incremented by XTread_socket whenever it really tries to read events. */
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
209 #ifdef __STDC__
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
210 static int volatile input_signal_count;
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
211 #else
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
212 static int input_signal_count;
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
213 #endif
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
214
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
215 /* Used locally within XTread_socket. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
216 static int x_noop_count;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
217
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
218 /* Initial values of argv and argc. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
219 extern char **initial_argv;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
220 extern int initial_argc;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
221
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
222 extern Lisp_Object Vcommand_line_args, Vsystem_name;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
223
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 /* Tells if a window manager is present or not. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 extern Lisp_Object Vx_no_window_manager;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 /* Nonzero enables some debugging for the X interface code. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 extern int _Xdebug;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230
6941
a914781ef58a (Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents: 6934
diff changeset
231 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
232
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 extern int errno;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
235 /* 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
236 extern int extra_keyboard_modifiers;
338e4ffdb54b (XTread_socket): Support extra_keyboard_modifiers.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
237
11807
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
238 static Lisp_Object Qvendor_specific_keysyms;
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
239
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
240 extern XrmDatabase x_load_resources ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
242 extern Lisp_Object x_icon_type ();
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
243
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
244 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
245
4277
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
246 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
247 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
248 static unsigned int x_x_to_emacs_modifiers ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249
7282
2bc4929691e9 (show_mouse_face): Fix test for cursor in highlighted area.
Karl Heuer <kwzh@gnu.org>
parents: 7264
diff changeset
250 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
251 static void note_mouse_highlight ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
252 static void clear_mouse_face ();
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
253 static void show_mouse_face ();
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
254 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
255
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
256 static int XTcursor_to ();
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
257 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
258 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
259 void x_catch_errors ();
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
260 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
261
12192
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
262 #if 0
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
263 /* This is a function useful for recording debugging information
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
264 about the sequence of occurrences in this file. */
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
265
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
266 struct record
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
267 {
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
268 char *locus;
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
269 int type;
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
270 };
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
271
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
272 struct record event_record[100];
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
273
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
274 int event_record_index;
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
275
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
276 record_event (locus, type)
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
277 char *locus;
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
278 int type;
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
279 {
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
280 if (event_record_index == sizeof (event_record) / sizeof (struct record))
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
281 event_record_index = 0;
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
282
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
283 event_record[event_record_index].locus = locus;
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
284 event_record[event_record_index].type = type;
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
285 event_record_index++;
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
286 }
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
287
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
288 #endif /* 0 */
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
289
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
290 /* 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
291
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
292 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
293 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
294 Display *dpy;
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
295 {
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
296 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
297
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
298 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
299 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
300 return dpyinfo;
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
301
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
302 return 0;
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
303 }
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
304
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
305 /* 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
306
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
307 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
308 of a frame update. We record in `updating_frame' the identity
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
309 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
310 need to take a frame as argument. Most of the XT... functions
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 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
312 being XTcursor_to, XTwrite_glyphs and XTreassert_line_highlight. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 static
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
315 XTupdate_begin (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
316 struct frame *f;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
317 {
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
320 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
323 flexlines = f->height;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 highlight = 0;
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;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
327
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
328 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
329 {
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
330 /* 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
331 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
332
97fc8c6b4a74 (XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents: 9823
diff changeset
333 /* 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
334 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
335 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
336 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
337
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
338 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
339 {
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
340 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
341 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
342
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
343 /* 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
344 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
345 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
346 break;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
347
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
348 lastline = f->height;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
349 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
350 {
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
351 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
352 break;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
353 else
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
354 lastline = i;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
355 }
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
356
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
357 /* 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
358 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
359 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
360 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
361 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
362 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
363 || 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
364 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
365 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
366 }
8781
98741404d3e0 Delete X11 conditionals.
Richard M. Stallman <rms@gnu.org>
parents: 8724
diff changeset
367
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 static
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
372 XTupdate_end (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
373 struct frame *f;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
374 {
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
379 do_line_dance ();
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
380 x_display_cursor (f, 1);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
381
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
382 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
383 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
384 #if 0
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
385 /* 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
386 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
387 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
388 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
389 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
390 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
391 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
392 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
393 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
394 #endif
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
395
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
396 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
399
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
400 /* 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
401
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
402 static
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
403 XTframe_up_to_date (f)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
404 FRAME_PTR f;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
405 {
13633
3fa66bb82d59 (XTframe_up_to_date): Block and unblock input.
Richard M. Stallman <rms@gnu.org>
parents: 13627
diff changeset
406 BLOCK_INPUT;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
407 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
408 || 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
409 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
410 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
411 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
412 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
413 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
414 }
13633
3fa66bb82d59 (XTframe_up_to_date): Block and unblock input.
Richard M. Stallman <rms@gnu.org>
parents: 13627
diff changeset
415 UNBLOCK_INPUT;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
416 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 /* External interface to control of standout mode.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 Call this when about to modify line at position VPOS
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 and not change whether it is highlighted. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 XTreassert_line_highlight (new, vpos)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 int new, vpos;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 highlight = new;
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 /* Call this when about to modify line at position VPOS
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 and change whether it is highlighted. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 XTchange_line_highlight (new_highlight, vpos, first_unused_hpos)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 int new_highlight, vpos, first_unused_hpos;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 highlight = new_highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 XTcursor_to (vpos, 0);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
437 XTclear_end_of_line (updating_frame->width);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 /* This is used when starting Emacs and when restarting after suspend.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 When starting Emacs, no X window is mapped. And nothing must be done
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 to Emacs's own window if it is suspended (though that rarely happens). */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 XTset_terminal_modes ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 /* This is called when exiting or suspending Emacs.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450 Exiting will make the X-windows go away, and suspending
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 requires no action. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 XTreset_terminal_modes ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
456 /* XTclear_frame (); */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
459 /* 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
460 This is where display update commands will take effect.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 This does not affect the place where the cursor-box is displayed. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
463 static int
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 XTcursor_to (row, col)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 register int row, col;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 int orow = row;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 curs_x = col;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471 curs_y = row;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
473 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 BLOCK_INPUT;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
476 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
477 XFlush (FRAME_X_DISPLAY (selected_frame));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 /* Display a sequence of N glyphs found at GP.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483 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
484 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
485 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
486 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
487 don't alter the background.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
489 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
490
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
491 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
492 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
493 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
494 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
495 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
496 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
497
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
498 #if 1
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
499 /* 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
500
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
501 static void
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
502 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
503 struct frame *f;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
504 int left, top;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
505 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
506 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
507 int hl;
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
508 int just_foreground;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
509 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
510 /* Holds characters to be displayed. */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
511 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
512 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
513 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
514 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
515 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
516 int orig_left = left;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
517
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
518 while (n > 0)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
519 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
520 /* 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
521 int cf, len;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
522 int g = *gp;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
523
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
524 GLYPH_FOLLOW_ALIASES (tbase, tlen, g);
6413
6eb1a3cf0371 (dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents: 6356
diff changeset
525 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
526
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
527 /* 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
528 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
529 cp = buf;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
530 while (n > 0)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
531 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
532 g = *gp;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
533 GLYPH_FOLLOW_ALIASES (tbase, tlen, g);
6413
6eb1a3cf0371 (dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents: 6356
diff changeset
534 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
535 break;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
536
6413
6eb1a3cf0371 (dumpglyphs): Use the fast macros.
Karl Heuer <kwzh@gnu.org>
parents: 6356
diff changeset
537 *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
538 --n;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
539 ++gp;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
540 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
541
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
542 /* 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
543 len = cp - buf;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
544
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
545 /* 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
546 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
547 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
548 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
549 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
550 GC gc = FACE_GC (face);
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
551 int stippled = 0;
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
552
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
553 /* 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
554 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
555 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
556
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
557 /* 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
558 if (cf != 0)
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
559 {
5719
d3074ff90741 (dumpglyphs): Don't crash for invalid face code.
Richard M. Stallman <rms@gnu.org>
parents: 5686
diff changeset
560 /* 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
561 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
562 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
563 || 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
564 cf = 0;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
565
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
566 if (cf == 1)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
567 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
568 else
3883
b9e5a869b33e Separate parameter faces (those created and modified by the user)
Jim Blandy <jimb@redhat.com>
parents: 3839
diff changeset
569 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
570 font = FACE_FONT (face);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
571 gc = FACE_GC (face);
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
572 if (FACE_STIPPLE (face))
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
573 stippled = 1;
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
574 }
2785
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
575
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
576 /* 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
577 else if (hl == 0)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
578 ;
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
579 else if (hl == 1)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
580 {
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
581 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
582 font = FACE_FONT (face);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
583 gc = FACE_GC (face);
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
584 if (FACE_STIPPLE (face))
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
585 stippled = 1;
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
586 }
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
587
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
588 #define FACE_DEFAULT (~0)
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
589
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
590 /* 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
591 if (hl == 2)
2840
12299f73584e (dumpglyphs): Create a temporary merged gc
Richard M. Stallman <rms@gnu.org>
parents: 2785
diff changeset
592 {
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
593 /* The cursor overrides stippling. */
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
594 stippled = 0;
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
595
7935
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
596 if ((!face->font
11259
81f5d9eb1484 (dumpglyphs): Cast FACE_DEFAULT to (XFontStruct *)
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
597 || face->font == (XFontStruct *) FACE_DEFAULT
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
598 || face->font == f->output_data.x->font)
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
599 && face->background == f->output_data.x->background_pixel
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
600 && face->foreground == f->output_data.x->foreground_pixel)
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
601 {
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
602 gc = f->output_data.x->cursor_gc;
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
603 }
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
604 /* 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
605 else
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
606 {
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
607 XGCValues xgcv;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
608 unsigned long mask;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
609
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
610 xgcv.background = f->output_data.x->cursor_pixel;
7935
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
611 xgcv.foreground = face->background;
5987
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
612 /* If the glyph would be invisible,
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
613 try a different foreground. */
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
614 if (xgcv.foreground == xgcv.background)
7469
24b292242269 (dumpglyphs): For cursor foreground, try the
Richard M. Stallman <rms@gnu.org>
parents: 7415
diff changeset
615 xgcv.foreground = face->foreground;
5987
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
616 if (xgcv.foreground == xgcv.background)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
617 xgcv.foreground = f->output_data.x->cursor_foreground_pixel;
5987
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
618 if (xgcv.foreground == xgcv.background)
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
619 xgcv.foreground = face->foreground;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
620 /* 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
621 if (xgcv.background == face->background
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
622 && xgcv.foreground == face->foreground)
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
623 {
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
624 xgcv.background = face->foreground;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
625 xgcv.foreground = face->background;
040bdc2fec7c (dumpglyphs): Try various alternatives for foreground color
Richard M. Stallman <rms@gnu.org>
parents: 5986
diff changeset
626 }
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
627 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
628 xgcv.graphics_exposures = 0;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
629 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
630 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
631 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
632 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
633 mask, &xgcv);
7935
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
634 else
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
635 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
636 = 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
637 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
638 #if 0
7935
f15e1a058e93 (scratch_cursor_gc): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7916
diff changeset
639 /* 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
640 if necessary. */
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
641 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
642 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
643 #endif
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
644 }
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
645 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
646
11259
81f5d9eb1484 (dumpglyphs): Cast FACE_DEFAULT to (XFontStruct *)
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
647 if (font == (XFontStruct *) FACE_DEFAULT)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
648 font = f->output_data.x->font;
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
649
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
650 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
651 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
652 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
653 else
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
654 {
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
655 if (stippled)
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
656 {
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
657 /* Turn stipple on. */
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
658 XSetFillStyle (FRAME_X_DISPLAY (f), gc, FillOpaqueStippled);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
659
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
660 /* 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
661 XFillRectangle (FRAME_X_DISPLAY (f), window, gc,
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
662 left, top,
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
663 FONT_WIDTH (font) * len,
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
664 FONT_HEIGHT (font));
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
665
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
666 /* Turn stipple off. */
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
667 XSetFillStyle (FRAME_X_DISPLAY (f), gc, FillSolid);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
668
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
669 /* 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
670 XDrawString (FRAME_X_DISPLAY (f), window, gc,
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
671 left, top + FONT_BASE (font), buf, len);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
672 }
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
673 else
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
674 XDrawImageString (FRAME_X_DISPLAY (f), window, gc,
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
675 left, top + FONT_BASE (font), buf, len);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
676
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
677 /* Clear the rest of the line's height. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
678 if (f->output_data.x->line_height != FONT_HEIGHT (font))
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
679 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
680 top + FONT_HEIGHT (font),
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
681 FONT_WIDTH (font) * len,
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
682 /* 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
683 we have to clear. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
684 f->output_data.x->line_height - FONT_HEIGHT (font),
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
685 False);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
686 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
687
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
688 #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
689 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
690 if (!just_foreground)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
691 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
692 if (left == orig_left)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
693 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
694 PIXEL_TO_CHAR_ROW (f, top), hl == 1);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
695 if (n == 0)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
696 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
697 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
698 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
699 #endif
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
700
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
701 /* 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
702 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
703 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
704 {
2785
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
705 int underline_position = 1;
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
706
55e9c556bbf8 * xterm.c (dumpglyphs): Give the cursor higher priority than the
Jim Blandy <jimb@redhat.com>
parents: 2732
diff changeset
707 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
708 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
709
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
710 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
711 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
712 FACE_GC (face),
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
713 left, (top
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
714 + FONT_BASE (font)
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
715 + underline_position),
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
716 len * FONT_WIDTH (font), 1);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
717 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
718
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
719 left += len * FONT_WIDTH (font);
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
720 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
721 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
722 }
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
723 #endif /* 1 */
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
724
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
725 #if 0
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
726 /* This is the old single-face code. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
729 dumpglyphs (f, left, top, gp, n, hl, font)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
730 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731 int left, top;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 register GLYPH *gp; /* Points to first GLYPH. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
733 register int n; /* Number of glyphs to display. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 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
735 XFontStruct *font;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 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
738 Window window = FRAME_X_WINDOW (f);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
739 GC drawing_gc = (hl == 2 ? f->output_data.x->cursor_gc
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
740 : (hl ? f->output_data.x->reverse_gc
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
741 : f->output_data.x->normal_gc));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742
313
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
743 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
744 XDrawImageString16 (FRAME_X_DISPLAY (f), window, drawing_gc,
313
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
745 left, top + FONT_BASE (font), (XChar2b *) gp, n);
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
746 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
747 XDrawImageString (FRAME_X_DISPLAY (f), window, drawing_gc,
313
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
748 left, top + FONT_BASE (font), (char *) gp, n);
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
749 else
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
750 /* 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
751 draw them? */
ac18f34e3e33 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
752 abort ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753 }
2732
8b55aa587d3c * xdisp.c (display_text_line): Apply faces to characters
Jim Blandy <jimb@redhat.com>
parents: 2661
diff changeset
754 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
756 /* 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
757 Advance the cursor over the text.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758 Output LEN glyphs at START.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
759
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
760 `highlight', set up by XTreassert_line_highlight or XTchange_line_highlight,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
761 controls the pixel values used for foreground and background. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
762
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
764 XTwrite_glyphs (start, len)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765 register GLYPH *start;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766 int len;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
767 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 register int temp_length;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769 int mask;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
770 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
774 do_line_dance ();
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
775 f = updating_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
776 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
778 f = selected_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 /* If not within an update,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
780 output at the frame's visible cursor. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
781 curs_x = f->cursor_x;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
782 curs_y = f->cursor_y;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
785 dumpglyphs (f,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
786 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
787 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
788 start, len, highlight, 0);
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
789
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
790 /* 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
791 if (curs_y == f->phys_cursor_y
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
792 && curs_x <= f->phys_cursor_x
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
793 && curs_x + len > f->phys_cursor_x)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
794 f->phys_cursor_x = -1;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
795
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
796 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
797 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
798 f->cursor_x += len;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
799 x_display_cursor (f, 1);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
800 f->cursor_x -= len;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 curs_x += len;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
808 /* 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
809 Erase the current text line from the nominal cursor position (inclusive)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
810 to column FIRST_UNUSED (exclusive). The idea is that everything
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
811 from FIRST_UNUSED onward is already erased. */
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
812
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
813 static
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814 XTclear_end_of_line (first_unused)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
815 register int first_unused;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
816 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
817 struct frame *f = updating_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
819
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
820 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
821 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
823 if (curs_y < 0 || curs_y >= f->height)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
824 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825 if (first_unused <= 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
828 if (first_unused >= f->width)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
829 first_unused = f->width;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
830
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832
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
833 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
834
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
835 /* Notice if the cursor will be cleared by this operation. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
836 if (curs_y == f->phys_cursor_y
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
837 && curs_x <= f->phys_cursor_x
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
838 && f->phys_cursor_x < first_unused)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
839 f->phys_cursor_x = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
840
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
841 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
842 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
843 CHAR_TO_PIXEL_ROW (f, curs_y),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
844 FONT_WIDTH (f->output_data.x->font) * (first_unused - curs_x),
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
845 f->output_data.x->line_height, False);
4277
c3fbb9249f5b (redraw_previous_char): New function.
Richard M. Stallman <rms@gnu.org>
parents: 4244
diff changeset
846 #if 0
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
847 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
848 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
849
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853 static
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
854 XTclear_frame ()
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856 int mask;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
857 struct frame *f = updating_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
858
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
859 if (f == 0)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
860 f = selected_frame;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
861
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
862 f->phys_cursor_x = -1; /* Cursor not visible. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863 curs_x = 0; /* Nominal cursor position is top left. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864 curs_y = 0;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
865
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
866 BLOCK_INPUT;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
867
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
868 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
869
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
870 /* 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
871 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
872 x_scroll_bar_clear (f);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
873
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
874 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
875 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
877
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
878 #if 0
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
879 /* 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
880 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
881
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
882 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
883 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
884 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
885 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
886
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
887 /* 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
888 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
889 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
890 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
891 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
892
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
893 static void
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
894 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
895 FRAME_PTR f;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
896 int x, y;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
897 int highlight_flag;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
898 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
899 /* 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
900 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
901 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
902 (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
903 if (x > 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 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
906 if (start_x < 0)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
907 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
908 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
909 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
910 CHAR_TO_PIXEL_ROW (f, y),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
911 FONT_WIDTH (f->output_data.x->font),
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
912 f->output_data.x->line_height, False);
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
913
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
914 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
915 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
916 &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
917 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
918 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
919 }
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 /* 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
922 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
923 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
924 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
925 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
926
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
927 static void
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
928 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
929 FRAME_PTR f;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
930 int x, y;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
931 int highlight_flag;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
932 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
933 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
934 /* 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
935 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
936 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
937 (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
938 if (x < limit
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
939 && 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
940 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
941 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
942 if (end_x > limit)
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
943 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
944 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
945 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
946 CHAR_TO_PIXEL_ROW (f, y),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
947 FONT_WIDTH (f->output_data.x->font),
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
948 f->output_data.x->line_height, False);
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
949
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
950 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
951 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
952 &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
953 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
954 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
955 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
956 #endif /* 0 */
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
957
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
958 #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
959
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
960 /* 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
961
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
962 static int
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
963 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
964 XFontStruct *font;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
965 int c;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
966 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
967 XCharStruct *s;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
968
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
969 /* 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
970 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
971 s = &font->max_bounds;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
972 else
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
973 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
974 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
975 int row, within;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
976
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
977 /* 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
978 row = c >> 8;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
979 within = c & 0177;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
980 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
981 && 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
982 && row >= font->min_byte1
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
983 && row <= font->max_byte1))
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
984 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
985 /* 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
986 c = font->default_char;
13363
941c37982f37 (BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents: 13232
diff changeset
987 row = c >> (BITS_PER_INT - 8);
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
988 within = c & 0177;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
989 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
990 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
991 && 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
992 && row >= font->min_byte1
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
993 && row <= font->max_byte1))
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
994 /* 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
995 return 0;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
996 else
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
997 /* 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
998 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
999 + row * rowlen);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1000 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1001
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1002 return (s && s->lbearing < 0);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1003 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1004
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1005 /* 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
1006
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1007 static int
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1008 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
1009 XFontStruct *font;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1010 int c;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1011 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1012 XCharStruct *s;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1013
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1014 /* 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
1015 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
1016 s = &font->max_bounds;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1017 else
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1018 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1019 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
1020 int row, within;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1021
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1022 /* 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
1023 row = c >> 8;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1024 within = c & 0177;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1025 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
1026 && 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
1027 && row >= font->min_byte1
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1028 && row <= font->max_byte1))
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1029 {
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1030 /* 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
1031 c = font->default_char;
13363
941c37982f37 (BITS_PER_SHORT, BITS_PER_INT, BITS_PER_LONG):
Karl Heuer <kwzh@gnu.org>
parents: 13232
diff changeset
1032 row = c >> (BITS_PER_INT - 8);
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1033 within = c & 0177;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1034 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1035 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
1036 && 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
1037 && row >= font->min_byte1
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1038 && row <= font->max_byte1))
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1039 /* 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
1040 return 0;
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1041 else
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1042 /* 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
1043 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
1044 + row * rowlen);
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1045 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1046
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1047 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
1048 }
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1049 #endif /* 0 */
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1050
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1051 /* 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
1052
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1053 /* 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
1054 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
1055 #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT)
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 /* Subtract the `struct timeval' values X and Y,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1058 storing the result in RESULT.
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1059 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
1060
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1061 static int
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1062 timeval_subtract (result, x, y)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1063 struct timeval *result, x, y;
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 /* 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
1066 This is safer because on some systems
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1067 the tv_sec member is unsigned. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1068 if (x.tv_usec < y.tv_usec)
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 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
1071 y.tv_usec -= 1000000 * nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1072 y.tv_sec += nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1073 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1074 if (x.tv_usec - y.tv_usec > 1000000)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1075 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1076 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
1077 y.tv_usec += 1000000 * nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1078 y.tv_sec -= nsec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1079 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1080
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1081 /* 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
1082 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
1083 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
1084
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1085 /* 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
1086 return x.tv_sec < y.tv_sec;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1087 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1088
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1089 XTflash (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1090 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1091 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1092 BLOCK_INPUT;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1093
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1094 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1095 GC gc;
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 /* 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
1098 into background pixels. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1099 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1100 XGCValues values;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1101
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1102 values.function = GXxor;
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1103 values.foreground = (f->output_data.x->foreground_pixel
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1104 ^ f->output_data.x->background_pixel);
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1105
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1106 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
1107 GCFunction | GCForeground, &values);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1108 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1109
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1110 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1111 int width = PIXEL_WIDTH (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1112 int height = PIXEL_HEIGHT (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1113
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1114 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
1115 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
1116 XFlush (FRAME_X_DISPLAY (f));
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1117
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1118 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1119 struct timeval wakeup, now;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1120
5362
d1fa597d923d (XTflush): FIx typo in last change.
Richard M. Stallman <rms@gnu.org>
parents: 5357
diff changeset
1121 EMACS_GET_TIME (wakeup);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1122
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1123 /* 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
1124 wakeup.tv_usec += 150000;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1125 wakeup.tv_sec += (wakeup.tv_usec / 1000000);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1126 wakeup.tv_usec %= 1000000;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1127
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1128 /* Keep waiting until past the time wakeup. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1129 while (1)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1130 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1131 struct timeval timeout;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1132
5362
d1fa597d923d (XTflush): FIx typo in last change.
Richard M. Stallman <rms@gnu.org>
parents: 5357
diff changeset
1133 EMACS_GET_TIME (timeout);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1134
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1135 /* In effect, timeout = wakeup - timeout.
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1136 Break if result would be negative. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1137 if (timeval_subtract (&timeout, wakeup, timeout))
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1138 break;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1139
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1140 /* 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
1141 select (0, NULL, NULL, NULL, &timeout);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1142 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1143 }
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1144
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1145 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
1146 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
1147 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
1148 XFlush (FRAME_X_DISPLAY (f));
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1149 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1150 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1151
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1152 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1153 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1154
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1155 #endif
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1156
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1157
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1158 /* Make audible bell. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1159
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1160 #define XRINGBELL XBell (FRAME_X_DISPLAY (selected_frame), 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1161
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1162 XTring_bell ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1163 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1164 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
1165 return;
48d20a0b229a (XTring_bell): Do nothing if x_current_connection is 0.
Richard M. Stallman <rms@gnu.org>
parents: 3218
diff changeset
1166
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1167 #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1168 if (visible_bell)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1169 XTflash (selected_frame);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1170 else
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
1171 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1172 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1173 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1174 XRINGBELL;
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1175 XFlush (FRAME_X_DISPLAY (selected_frame));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1176 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1177 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1178 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1179
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1180 /* Insert and delete character.
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1181 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
1182 off the feature of using them. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1183
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1184 static
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1185 XTinsert_glyphs (start, len)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1186 register char *start;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1187 register int len;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1188 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1189 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1190 }
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 static
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1193 XTdelete_glyphs (n)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1194 register int n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1195 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1196 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1197 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1198
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1199 /* Specify how many text lines, from the top of the window,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1200 should be affected by insert-lines and delete-lines operations.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1201 This, and those operations, are used only within an update
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1202 that is bounded by calls to XTupdate_begin and XTupdate_end. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1203
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1204 static
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1205 XTset_terminal_window (n)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1206 register int n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1207 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1208 if (updating_frame == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1209 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1210
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1211 if ((n <= 0) || (n > updating_frame->height))
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1212 flexlines = updating_frame->height;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1213 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1214 flexlines = n;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1215 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1216
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
1217 /* 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
1218 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
1219 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
1220 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
1221
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1222 /* Array of line numbers from cached insert/delete operations.
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1223 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
1224 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
1225 static int *line_dance;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1226
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1227 /* Allocated length of that array. */
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1228 static int line_dance_len;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1229
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1230 /* Flag indicating whether we've done any work. */
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1231 static int line_dance_in_progress;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1232
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1233 /* Perform an insert-lines or delete-lines operation,
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1234 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
1235 XTins_del_lines (vpos, n)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1236 int vpos, n;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1237 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1238 register int fence, i;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1239
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1240 if (vpos >= flexlines)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1241 return;
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 if (!line_dance_in_progress)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1244 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1245 int ht = updating_frame->height;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1246 if (ht > line_dance_len)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1247 {
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1248 line_dance = (int *)xrealloc (line_dance, ht * sizeof (int));
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1249 line_dance_len = ht;
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 (i = 0; i < ht; ++i) line_dance[i] = i;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1252 line_dance_in_progress = 1;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1253 }
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1254 if (n >= 0)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1255 {
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1256 if (n > flexlines - vpos)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1257 n = flexlines - vpos;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1258 fence = vpos + n;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1259 for (i = flexlines; --i >= fence;)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1260 line_dance[i] = line_dance[i-n];
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1261 for (i = fence; --i >= vpos;)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1262 line_dance[i] = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1263 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1264 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1265 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1266 n = -n;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1267 if (n > flexlines - vpos)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1268 n = flexlines - vpos;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1269 fence = flexlines - n;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1270 for (i = vpos; i < fence; ++i)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1271 line_dance[i] = line_dance[i + n];
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1272 for (i = fence; i < flexlines; ++i)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1273 line_dance[i] = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1274 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1275 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1276
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1277 /* Here's where we actually move the pixels around.
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1278 Must be called with input blocked. */
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1279 static void
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1280 do_line_dance ()
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1281 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1282 register int i, j, distance;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1283 register struct frame *f;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1284 int ht;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1285 int intborder;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1286
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1287 /* 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
1288 array uninitialized, but we might not even have a frame. */
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1289 if (!line_dance_in_progress)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1290 return;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1291
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1292 f = updating_frame;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1293 if (f == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1294 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1295
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1296 ht = f->height;
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1297 intborder = f->output_data.x->internal_border_width;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1298
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1299 x_display_cursor (updating_frame, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1300
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1301 for (i = 0; i < ht; ++i)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1302 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
1303 {
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1304 for (j = i; (j < ht && line_dance[j] != -1
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1305 && line_dance[j]-j == distance); ++j);
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1306 /* 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
1307 XCopyArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1308 FRAME_X_WINDOW (f), f->output_data.x->normal_gc,
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1309 intborder, CHAR_TO_PIXEL_ROW (f, i+distance),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1310 f->width * FONT_WIDTH (f->output_data.x->font),
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1311 (j-i) * f->output_data.x->line_height,
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1312 intborder, CHAR_TO_PIXEL_ROW (f, i));
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1313 i = j-1;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1314 }
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1315
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1316 for (i = ht; --i >=0; )
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1317 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
1318 {
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1319 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
1320 && line_dance[j]-j == distance););
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1321 /* 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
1322 XCopyArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1323 FRAME_X_WINDOW (f), f->output_data.x->normal_gc,
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1324 intborder, CHAR_TO_PIXEL_ROW (f, j+1+distance),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1325 f->width * FONT_WIDTH (f->output_data.x->font),
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1326 (i-j) * f->output_data.x->line_height,
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1327 intborder, CHAR_TO_PIXEL_ROW (f, j+1));
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1328 i = j+1;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1329 }
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1330
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1331 for (i = 0; i < ht; ++i)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1332 if (line_dance[i] == -1)
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1333 {
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1334 for (j = i; j < ht && line_dance[j] == -1; ++j);
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1335 /* 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
1336 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1337 intborder, CHAR_TO_PIXEL_ROW (f, i),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1338 f->width * FONT_WIDTH (f->output_data.x->font),
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1339 (j-i) * f->output_data.x->line_height, False);
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1340 i = j-1;
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1341 }
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1342 line_dance_in_progress = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1344
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1345 /* Support routines for exposure events. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1346 static void clear_cursor ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1347
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1348 /* Output into a rectangle of an X-window (for frame F)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1349 the characters in f->phys_lines that overlap that rectangle.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1350 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
1351 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
1352 Call this function with input blocked. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1353
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1354 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1355 dumprectangle (f, left, top, cols, rows)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1356 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 register int left, top, cols, rows;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1359 register struct frame_glyphs *active_frame = FRAME_CURRENT_GLYPHS (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1360 int cursor_cleared = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1361 int bottom, right;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1362 register int y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1363
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1364 if (FRAME_GARBAGED_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1365 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1366
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1367 /* Express rectangle as four edges, instead of position-and-size. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1368 bottom = top + rows;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1369 right = left + cols;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1370
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1371 /* Convert rectangle edges in pixels to edges in chars.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1372 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
1373 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
1374 left = PIXEL_TO_CHAR_COL (f, left);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1375 bottom += (f->output_data.x->line_height - 1);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1376 right += (FONT_WIDTH (f->output_data.x->font) - 1);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1377 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
1378 right = PIXEL_TO_CHAR_COL (f, right);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1379
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1380 /* Clip the rectangle to what can be visible. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1381 if (left < 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1382 left = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1383 if (top < 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1384 top = 0;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1385 if (right > f->width)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1386 right = f->width;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1387 if (bottom > f->height)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1388 bottom = f->height;
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 /* Get size in chars of the rectangle. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1391 cols = right - left;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1392 rows = bottom - top;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1393
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1394 /* If rectangle has zero area, return. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1395 if (rows <= 0) return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1396 if (cols <= 0) return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1397
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1398 /* Turn off the cursor if it is in the rectangle.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1399 We will turn it back on afterward. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1400 if ((f->phys_cursor_x >= left) && (f->phys_cursor_x < right)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1401 && (f->phys_cursor_y >= top) && (f->phys_cursor_y < bottom))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1402 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1403 clear_cursor (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1404 cursor_cleared = 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1405 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1406
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1407 /* Display the text in the rectangle, one text line at a time. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1408
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1409 for (y = top; y < bottom; y++)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1410 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1411 GLYPH *line = &active_frame->glyphs[y][left];
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1412
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1413 if (! active_frame->enable[y] || left > active_frame->used[y])
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1414 continue;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1415
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1416 dumpglyphs (f,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1417 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
1418 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
1419 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
1420 active_frame->highlight[y], 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1421 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1422
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1423 /* Turn the cursor on if we turned it off. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1424
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1425 if (cursor_cleared)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1426 x_display_cursor (f, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1427 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1428
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1429 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
1430 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
1431 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1432 {
3943
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1433 /* 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
1434 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
1435 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
1436 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
1437 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
1438 XSetWindowBorder (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1439 f->output_data.x->border_pixel);
3943
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1440 UNBLOCK_INPUT;
12431
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
1441 x_update_cursor (f, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1442 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1443
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1444 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
1445 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
1446 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1447 {
3943
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1448 /* 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
1449 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
1450 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
1451 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
1452 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
1453 XSetWindowBorderPixmap (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1454 f->output_data.x->border_tile);
3943
cbdf67dd68d0 * xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents: 3938
diff changeset
1455 UNBLOCK_INPUT;
12431
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
1456 x_update_cursor (f, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1457 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1458
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1459 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
1460 static void x_frame_rehighlight ();
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1461
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1462 /* The focus has changed. Update the frames as necessary to reflect
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1463 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
1464 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
1465 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
1466 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
1467
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1468 static void
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1469 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
1470 struct x_display_info *dpyinfo;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1471 struct frame *frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1472 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1473 struct frame *old_focus = dpyinfo->x_focus_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1474 int events_enqueued = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1475
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1476 if (frame != dpyinfo->x_focus_frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1477 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1478 /* Set this before calling other routines, so that they see
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1479 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
1480 dpyinfo->x_focus_frame = frame;
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1481
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1482 if (old_focus && old_focus->auto_lower)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1483 x_lower_frame (old_focus);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1484
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1485 #if 0
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1486 selected_frame = frame;
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
1487 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
1488 selected_frame);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1489 Fselect_window (selected_frame->selected_window);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1490 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
1491 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1492
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1493 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
1494 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
1495 else
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
1496 pending_autoraise_frame = 0;
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1497 }
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1498
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1499 x_frame_rehighlight (dpyinfo);
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1500 }
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1501
10223
97fc8c6b4a74 (XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents: 9823
diff changeset
1502 /* 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
1503
97fc8c6b4a74 (XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents: 9823
diff changeset
1504 void
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1505 x_mouse_leave (dpyinfo)
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1506 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
1507 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1508 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
1509 }
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1510
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1511 /* 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
1512 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
1513 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
1514
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1515 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
1516 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
1517 the appropriate X display info. */
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1518 static void
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1519 XTframe_rehighlight (frame)
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1520 struct frame *frame;
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1521 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1522 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
1523 }
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1524
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1525 static void
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1526 x_frame_rehighlight (dpyinfo)
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1527 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
1528 {
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1529 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
1530
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1531 if (dpyinfo->x_focus_frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1532 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1533 dpyinfo->x_highlight_frame
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1534 = ((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
1535 ? 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
1536 : dpyinfo->x_focus_frame);
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1537 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
1538 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1539 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
1540 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
1541 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1542 }
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1543 else
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1544 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
1545
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
1546 if (dpyinfo->x_highlight_frame != old_highlight)
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1547 {
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1548 if (old_highlight)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1549 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
1550 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
1551 frame_highlight (dpyinfo->x_highlight_frame);
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
1552 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1553 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1554
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1555 /* Keyboard processing - modifier keys, vendor-specific keysyms, etc. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1556
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1557 /* 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
1558 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
1559 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
1560 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
1561 {
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1562 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
1563 KeySym *syms;
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1564 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
1565 XModifierKeymap *mods;
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1566
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1567 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
1568 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
1569 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
1570 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
1571 dpyinfo->hyper_mod_mask = 0;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1572
2127
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1573 #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
1574 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
1575 #else
13884
26245345f6f1 (x_find_modifier_meanings): Fix !X11R4 code to use dpyinfo.
Richard M. Stallman <rms@gnu.org>
parents: 13782
diff changeset
1576 min_code = dpyinfo->display->min_keycode;
26245345f6f1 (x_find_modifier_meanings): Fix !X11R4 code to use dpyinfo.
Richard M. Stallman <rms@gnu.org>
parents: 13782
diff changeset
1577 max_code = dpyinfo->display->max_keycode;
2127
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1578 #endif
adaf588e32a6 * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents: 2064
diff changeset
1579
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1580 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
1581 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
1582 &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
1583 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
1584
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1585 /* 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
1586 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
1587 {
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1588 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
1589
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1590 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
1591 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
1592 {
10287
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
1593 KeyCode code
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
1594 = 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
1595
6560
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1596 /* Zeroes are used for filler. Skip them. */
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1597 if (code == 0)
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1598 continue;
a071babfa9ea (x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents: 6521
diff changeset
1599
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1600 /* 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
1601 {
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1602 int code_col;
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1603
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1604 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
1605 {
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1606 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
1607
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1608 switch (sym)
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1609 {
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1610 case XK_Meta_L:
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1611 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
1612 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
1613 break;
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1614
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1615 case XK_Alt_L:
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1616 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
1617 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
1618 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
1619
e179f9f55aa8 (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 2016
diff changeset
1620 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
1621 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
1622 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
1623 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
1624
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
1625 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
1626 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
1627 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
1628 break;
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1629
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1630 case XK_Shift_Lock:
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1631 /* 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
1632 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
1633 dpyinfo->shift_lock_mask = LockMask;
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
1634 break;
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1635 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1636 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1637 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1638 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1639 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1640
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1641 /* 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
1642 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
1643 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1644 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
1645 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
1646 }
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1647
2923
c8997402dd6b (x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents: 2882
diff changeset
1648 /* 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
1649 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
1650 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
1651 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1652 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
1653 }
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1654
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1655 XFree ((char *) syms);
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1656 XFreeModifiermap (mods);
1279
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1657 }
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
1658
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1659 /* 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
1660 Emacs uses. */
1530
a7f8a1fe258e * xterm.c (x_convert_modifiers): Declare this to return an
Jim Blandy <jimb@redhat.com>
parents: 1436
diff changeset
1661 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
1662 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
1663 struct x_display_info *dpyinfo;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1664 unsigned int state;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1665 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1666 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
1667 | ((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
1668 | ((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
1669 | ((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
1670 | ((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
1671 | ((state & dpyinfo->hyper_mod_mask) ? hyper_modifier : 0));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1672 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1673
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1674 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
1675 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
1676 struct x_display_info *dpyinfo;
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1677 unsigned int state;
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1678 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
1679 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
1680 | ((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
1681 | ((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
1682 | ((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
1683 | ((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
1684 | ((state & meta_modifier) ? dpyinfo->meta_mod_mask : 0));
2661
77f1457d000e Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents: 2474
diff changeset
1685 }
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1686
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1687 /* Convert a keysym to its name. */
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1688
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1689 char *
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1690 x_get_keysym_name (keysym)
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1691 KeySym keysym;
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1692 {
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1693 char *value;
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1694
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1695 BLOCK_INPUT;
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1696 value = XKeysymToString (keysym);
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1697 UNBLOCK_INPUT;
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1698
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1699 return value;
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
1700 }
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1701
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1702 /* Mouse clicks and mouse movement. Rah. */
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1703
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1704 /* 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
1705 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
1706 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
1707 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
1708
6023
67aa546e4ff1 (construct_menu_click): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6022
diff changeset
1709 void
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1710 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
1711 FRAME_PTR f;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1712 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
1713 register int *x, *y;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1714 XRectangle *bounds;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1715 int noclip;
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1716 {
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1717 /* 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
1718 even for negative values. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1719 if (pix_x < 0)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1720 pix_x -= FONT_WIDTH ((f)->output_data.x->font) - 1;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1721 if (pix_y < 0)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1722 pix_y -= (f)->output_data.x->line_height - 1;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1723
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1724 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
1725 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
1726
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1727 if (bounds)
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1728 {
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1729 bounds->width = FONT_WIDTH (f->output_data.x->font);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
1730 bounds->height = f->output_data.x->line_height;
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1731 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
1732 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
1733 }
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1734
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1735 if (!noclip)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1736 {
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1737 if (pix_x < 0)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1738 pix_x = 0;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1739 else if (pix_x > f->width)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1740 pix_x = f->width;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1741
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1742 if (pix_y < 0)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1743 pix_y = 0;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1744 else if (pix_y > f->height)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1745 pix_y = f->height;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1746 }
3585
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1747
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1748 *x = pix_x;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1749 *y = pix_y;
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1750 }
19aab2d09a4d * xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents: 3558
diff changeset
1751
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1752 void
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1753 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
1754 FRAME_PTR f;
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1755 register int x, y;
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1756 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
1757 {
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1758 *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
1759 *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
1760 }
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1761
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1762 /* Prepare a mouse-event in *RESULT for placement in the input queue.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1763
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1764 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
1765 the mouse. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1766
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1767 static Lisp_Object
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1768 construct_mouse_click (result, event, f)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1769 struct input_event *result;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1770 XButtonEvent *event;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1771 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1772 {
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1773 /* 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
1774 otherwise. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1775 result->kind = mouse_click;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1776 result->code = event->button - Button1;
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
1777 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
1778 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
1779 event->state)
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1780 | (event->type == ButtonRelease
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1781 ? up_modifier
1324
44215417cf6e * xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents: 1279
diff changeset
1782 : down_modifier));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1783
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1784 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1785 int row, column;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
1786
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
1787 #if 0
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1788 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
1789 XSETFASTINT (result->x, column);
97cfba406b7b (construct_mouse_click): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9338
diff changeset
1790 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
1791 #endif
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
1792 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
1793 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
1794 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
1795 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1796 }
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1797
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1798 /* 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
1799
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1800 static Lisp_Object
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1801 construct_menu_click (result, event, f)
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1802 struct input_event *result;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1803 XButtonEvent *event;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1804 struct frame *f;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1805 {
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1806 /* 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
1807 otherwise. */
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1808 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
1809 XSETINT (result->code, event->button - Button1);
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1810 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
1811 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
1812 event->state)
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1813 | (event->type == ButtonRelease
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1814 ? up_modifier
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1815 : down_modifier));
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1816
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
1817 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
1818 XSETINT (result->y, -1);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
1819 XSETFRAME (result->frame_or_window, f);
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
1820 }
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
1821
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1822 /* Function to report a mouse movement to the mainstream Emacs code.
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1823 The input handler calls this.
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1824
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1825 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
1826 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
1827 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
1828 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
1829
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1830 static void
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1831 note_mouse_movement (frame, event)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1832 FRAME_PTR frame;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1833 XMotionEvent *event;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1834 {
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 727
diff changeset
1835 last_mouse_movement_time = event->time;
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 727
diff changeset
1836
7680
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1837 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
1838 {
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
1839 frame->mouse_moved = 1;
7680
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1840 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
1841
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1842 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
1843
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1844 /* 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
1845 {
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1846 int dummy;
8279
4cde734c20e8 (note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents: 8164
diff changeset
1847 Window dummy_window;
7680
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1848
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1849 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
1850 &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
1851 &dummy, &dummy, &dummy, &dummy,
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1852 (unsigned int *) &dummy);
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1853 }
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1854 }
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1855
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1856 /* 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
1857 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
1858 || 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
1859 || 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
1860 || 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
1861 {
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
1862 frame->mouse_moved = 1;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
1863 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
1864
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1865 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
1866
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1867 /* 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
1868 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1869 int dummy;
8279
4cde734c20e8 (note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents: 8164
diff changeset
1870 Window dummy_window;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1871
7680
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1872 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
1873 &dummy_window, &dummy_window,
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1874 &dummy, &dummy, &dummy, &dummy,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1875 (unsigned int *) &dummy);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1876 }
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
1877 }
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1878 else
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1879 {
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1880 /* 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
1881 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
1882 *still* on the same glyph. */
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1883 int dummy;
8279
4cde734c20e8 (note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents: 8164
diff changeset
1884 Window dummy_window;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
1885
7680
8212755ff793 (note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents: 7651
diff changeset
1886 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
1887 &dummy_window, &dummy_window,
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1888 &dummy, &dummy, &dummy, &dummy,
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1889 (unsigned int *) &dummy);
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1890 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1891 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
1892
6644
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
1893 /* 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
1894 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
1895
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1896 /* 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
1897 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
1898 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
1899 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
1900
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1901 static void
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1902 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
1903 FRAME_PTR f;
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
1904 int x, y;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1905 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1906 int row, column, portion;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1907 XRectangle new_glyph;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1908 Lisp_Object window;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1909 struct window *w;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1910
6644
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
1911 if (disable_mouse_highlight)
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
1912 return;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
1913
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
1914 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
1915 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
1916 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
1917
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
1918 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
1919 return;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1920
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
1921 if (gc_in_progress)
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
1922 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
1923 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
1924 return;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
1925 }
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
1926
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1927 /* 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
1928 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
1929 &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
1930
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1931 /* Which window is that in? */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1932 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
1933 w = XWINDOW (window);
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 /* 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
1936 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
1937 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
1938
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
1939 /* 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
1940 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
1941 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
1942 && 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
1943 && 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
1944 && 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
1945 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1946 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
1947 int i, pos;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1948
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1949 /* 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
1950 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
1951 if (ptr[i] > 0)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1952 break;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1953 pos = ptr[i];
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1954 /* 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
1955 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
1956 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
1957 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
1958 && 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
1959 && row <= FRAME_X_DISPLAY_INFO (f)->mouse_face_end_row
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
1960 && (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
1961 || 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
1962 && (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
1963 || 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
1964 || 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
1965 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1966 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
1967 Lisp_Object *overlay_vec;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1968 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
1969 struct buffer *obuf;
6683
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1970 int obegv, ozv;
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1971
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1972 /* 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
1973 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
1974 return;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1975
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1976 /* 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
1977 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
1978 obuf = current_buffer;
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1979 current_buffer = XBUFFER (w->buffer);
6683
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1980 obegv = BEGV;
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1981 ozv = ZV;
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1982 BEGV = BEG;
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
1983 ZV = Z;
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1984
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1985 /* 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
1986 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
1987
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1988 /* 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
1989 XSETINT (position, pos);
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1990
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1991 len = 10;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1992 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
1993
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
1994 /* 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
1995 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
1996 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
1997 NULL, NULL);
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
1998 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
1999
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2000 /* 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
2001 overlay = Qnil;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2002 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
2003 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2004 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
2005 if (!NILP (mouse_face))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2006 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2007 overlay = overlay_vec[i];
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2008 break;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2009 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2010 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2011 free (overlay_vec);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2012 /* 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
2013 if (NILP (overlay))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2014 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
2015
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2016 /* Handle the overlay case. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2017 if (! NILP (overlay))
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2018 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2019 /* 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
2020 should be active. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2021 Lisp_Object before, after;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2022 int ignore;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2023
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2024 before = Foverlay_start (overlay);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2025 after = Foverlay_end (overlay);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2026 /* 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
2027 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
2028 &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
2029 &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
2030 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
2031 = !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
2032 &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
2033 &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
2034 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
2035 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
2036 = 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
2037 &ignore, pos + 1, 1);
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2038
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2039 /* 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
2040 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
2041 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2042 /* Handle the text property case. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2043 else if (! NILP (mouse_face))
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 /* 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
2046 should be active. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2047 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
2048 int ignore;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2049
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2050 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
2051 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
2052 - 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
2053 before
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2054 = 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
2055 Qmouse_face,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2056 w->buffer, beginning);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2057 after
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2058 = 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
2059 w->buffer, end);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2060 /* 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
2061 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
2062 &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
2063 &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
2064 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
2065 = !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
2066 &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
2067 &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
2068 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
2069 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
2070 = 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
2071 &ignore, pos + 1, 1);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2072
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2073 /* 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
2074 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
2075 }
6683
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
2076 BEGV = obegv;
af1629dfdb4c (note_mouse_highlight): Temporarily widen the buffer.
Richard M. Stallman <rms@gnu.org>
parents: 6660
diff changeset
2077 ZV = ozv;
6626
59c44532d2a0 (construct_menu_click, construct_mouse_click):
Richard M. Stallman <rms@gnu.org>
parents: 6616
diff changeset
2078 current_buffer = obuf;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2079 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2080 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2081 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2082
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2083 /* 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
2084 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
2085 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
2086 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
2087 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
2088 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
2089
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
2090 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
2091
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2092 static int
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2093 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
2094 Lisp_Object window;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2095 int pos;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2096 int *columnp, *rowp;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2097 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2098 struct window *w = XWINDOW (window);
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2099 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
2100 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
2101 int row = 0;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2102 int left = w->left;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2103 int top = w->top;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2104 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
2105 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
2106 int *charstarts;
6644
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2107 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
2108 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
2109
7651
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
2110 /* Find the right row. */
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2111 for (i = 0;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2112 i < height;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2113 i++)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2114 {
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2115 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
2116 if (linestart > pos)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2117 break;
9762
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2118 /* 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
2119 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
2120 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
2121 {
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2122 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
2123 break;
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2124 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2125 if (linestart > 0)
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2126 row = i;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2127 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2128
7651
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
2129 /* 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
2130 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
2131 lastcol = left;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2132 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
2133 {
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2134 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
2135 {
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2136 *rowp = row + top;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2137 *columnp = i + left;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2138 return 1;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2139 }
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2140 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
2141 break;
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
2142 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
2143 lastcol = left + i;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2144 }
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2145
9762
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2146 /* 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
2147 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
2148 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
2149 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
2150 {
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2151 row++;
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2152 i = 0;
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2153 }
567e3670acc3 (fast_find_position): Special case if POS is end of buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9741
diff changeset
2154
6644
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2155 *rowp = row + top;
8e2379ce4fcb (fast_find_position): Always return coords within the window.
Richard M. Stallman <rms@gnu.org>
parents: 6631
diff changeset
2156 *columnp = lastcol;
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2157 return 0;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2158 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2159
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2160 /* 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
2161 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
2162
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2163 static void
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2164 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
2165 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
2166 int hl;
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2167 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2168 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
2169 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
2170 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
2171 int i;
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2172 int cursor_off = 0;
8164
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2173 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
2174 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
2175
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2176 /* Set these variables temporarily
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2177 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
2178 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
2179 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
2180 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
2181
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2182 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
2183 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
2184 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2185 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
2186 ? 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
2187 : w->left);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2188 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
2189 ? 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
2190 : 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
2191 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
2192
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2193 /* 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
2194 turn the cursor off. */
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2195 if (i == curs_y
13598
4fbb17b559bf (show_mouse_face): When clearing cursor, use proper column range.
Richard M. Stallman <rms@gnu.org>
parents: 13561
diff changeset
2196 && curs_x >= column - 1
4fbb17b559bf (show_mouse_face): When clearing cursor, use proper column range.
Richard M. Stallman <rms@gnu.org>
parents: 13561
diff changeset
2197 && curs_x <= endcolumn)
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2198 {
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2199 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
2200 cursor_off = 1;
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2201 }
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2202
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2203 dumpglyphs (f,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2204 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
2205 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
2206 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
2207 endcolumn - column,
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2208 /* 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
2209 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
2210 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2211
6660
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2212 /* 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
2213 if (cursor_off)
cb14d76e993c (note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents: 6649
diff changeset
2214 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
2215
8164
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2216 curs_x = old_curs_x;
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2217 curs_y = old_curs_y;
3b90e6a741f1 (XTread_socket, construct_menu_click) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 8098
diff changeset
2218
6757
770fe370479b (show_mouse_face): Change the mouse cursor accordingly.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6683
diff changeset
2219 /* 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
2220 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
2221 XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
2222 f->output_data.x->cross_cursor);
6757
770fe370479b (show_mouse_face): Change the mouse cursor accordingly.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6683
diff changeset
2223 else
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2224 XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
2225 f->output_data.x->text_cursor);
6616
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2226 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2227
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2228 /* 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
2229 Redraw it unhighlighted first. */
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2230
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2231 static void
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2232 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
2233 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
2234 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2235 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
2236 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
2237
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2238 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
2239 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
2240 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
2241 }
951c8941b931 [INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents: 6560
diff changeset
2242
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2243 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
2244 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
2245
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2246 /* 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
2247 *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
2248
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2249 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
2250 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
2251 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
2252 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
2253
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2254 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
2255 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
2256 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
2257
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2258 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
2259 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
2260
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2261 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
2262
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2263 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
2264 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
2265 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
2266 again. */
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2267
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2268 static void
11122
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2269 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
2270 FRAME_PTR *fp;
11122
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2271 int insist;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2272 Lisp_Object *bar_window;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2273 enum scroll_bar_part *part;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2274 Lisp_Object *x, *y;
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 727
diff changeset
2275 unsigned long *time;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2276 {
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2277 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
2278
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2279 BLOCK_INPUT;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2280
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2281 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
2282 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
2283 else
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2284 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2285 Window root;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2286 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
2287
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2288 Window dummy_window;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2289 int dummy;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2290
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
2291 Lisp_Object frame, tail;
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
2292
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
2293 /* Clear the mouse-moved flag for every frame on this display. */
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
2294 FOR_EACH_FRAME (tail, frame)
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
2295 if (FRAME_X_DISPLAY (XFRAME (frame)) == FRAME_X_DISPLAY (*fp))
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
2296 XFRAME (frame)->mouse_moved = 0;
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
2297
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2298 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
2299
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2300 /* 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
2301 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
2302 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
2303
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2304 /* 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
2305 &root,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2306
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2307 /* 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
2308 a different screen. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2309 &dummy_window,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2310
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2311 /* The position on that root window. */
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2312 &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
2313
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2314 /* 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
2315 &dummy, &dummy,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2316
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2317 /* 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
2318 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
2319 (unsigned int *) &dummy);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2320
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2321 /* 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
2322 containing the pointer. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2323 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2324 Window win, child;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2325 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
2326 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
2327
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2328 win = root;
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2329
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2330 /* 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
2331 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
2332 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
2333
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2334 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
2335
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2336 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
2337 && 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
2338 {
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2339 /* 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
2340 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
2341 XTranslateCoordinates (FRAME_X_DISPLAY (*fp),
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2342
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2343 /* From-window, to-window. */
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2344 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
2345
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2346 /* 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
2347 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
2348
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2349 /* Child of win. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2350 &child);
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2351 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
2352 }
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2353 else
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2354 {
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2355 while (1)
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2356 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2357 XTranslateCoordinates (FRAME_X_DISPLAY (*fp),
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2358
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2359 /* From-window, to-window. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2360 root, win,
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2361
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2362 /* From-position, to-position. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2363 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
2364
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2365 /* Child of win. */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2366 &child);
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2367
13627
8873aa3451dd (XTmouse_position): Exit the loop if child == win.
Richard M. Stallman <rms@gnu.org>
parents: 13598
diff changeset
2368 if (child == None || child == win)
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2369 break;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2370
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2371 win = child;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2372 parent_x = win_x;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2373 parent_y = win_y;
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2374 }
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2375
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2376 /* Now we know that:
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2377 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
2378 (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
2379 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
2380 (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
2381 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
2382 (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
2383 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
2384 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
2385 never use them in that case.) */
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2386
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
2387 /* 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
2388 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
2389 }
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2390
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2391 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
2392 f1 = 0;
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2393
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
2394 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
2395
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2396 /* 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
2397 if (! f1)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2398 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2399 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
2400
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2401 if (bar)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2402 {
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2403 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
2404 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
2405 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
2406 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2407 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2408
11122
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2409 if (f1 == 0 && insist)
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2410 f1 = selected_frame;
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2411
3669
fd4187a96445 (XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents: 3639
diff changeset
2412 if (f1)
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2413 {
6055
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2414 int ignore1, ignore2;
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2415
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2416 /* 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
2417
a9f61727a90c (construct_mouse_click): Don't convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6023
diff changeset
2418 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
2419 &last_mouse_glyph,
11122
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2420 FRAME_X_DISPLAY_INFO (f1)->grabbed
ce63fb361ae9 (XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11015
diff changeset
2421 || insist);
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2422
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2423 *bar_window = Qnil;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2424 *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
2425 *fp = f1;
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2426 XSETINT (*x, win_x);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2427 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
2428 *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
2429 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2430 }
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2431 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2432
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2433 UNBLOCK_INPUT;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2434 }
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
2435
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2436 /* Scroll bar support. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2437
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2438 /* 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
2439 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
2440 bits. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2441 static struct scroll_bar *
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2442 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
2443 Window window_id;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2444 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2445 Lisp_Object tail, frame;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2446
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2447 for (tail = Vframe_list;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2448 XGCTYPE (tail) == Lisp_Cons;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2449 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
2450 {
6521
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
2451 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
2452
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
2453 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
2454 /* 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
2455 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
2456 abort ();
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2457
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2458 /* 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
2459 right window ID. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2460 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
2461 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
2462 /* 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
2463 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
2464 ! GC_NILP (bar) || (bar = condemned,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2465 condemned = Qnil,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2466 ! 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
2467 bar = XSCROLL_BAR (bar)->next)
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2468 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
2469 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
2470 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2471
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2472 return 0;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2473 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2474
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2475 /* 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
2476 scroll bar vector for it. */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2477 static struct scroll_bar *
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2478 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
2479 struct window *window;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2480 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
2481 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2482 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
2483 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
2484 = 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
2485
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2486 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2487
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2488 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2489 XSetWindowAttributes a;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2490 unsigned long mask;
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
2491 a.background_pixel = f->output_data.x->background_pixel;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2492 a.event_mask = (ButtonPressMask | ButtonReleaseMask
1793
cf4c3f01ddb9 * xterm.c (x_scrollbar_create): Include PointerMotionHintMask in
Jim Blandy <jimb@redhat.com>
parents: 1787
diff changeset
2493 | ButtonMotionMask | PointerMotionHintMask
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2494 | ExposureMask);
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
2495 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
2496
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
2497 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
2498
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2499 #if 0
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2500
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2501 ac = 0;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
2502 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
2503 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
2504 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
2505 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
2506 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
2507 sb_widget = XtCreateManagedWidget ("box",
5916
4e827db2523a (x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 5898
diff changeset
2508 boxWidgetClass,
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
2509 f->output_data.x->edit_widget, al, ac);
5916
4e827db2523a (x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 5898
diff changeset
2510 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
2511 (bar, sb_widget->core.window);
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2512 #endif
5916
4e827db2523a (x_scroll_bar_create): Fix indentation.
Karl Heuer <kwzh@gnu.org>
parents: 5898
diff changeset
2513 SET_SCROLL_BAR_X_WINDOW
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2514 (bar,
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2515 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
2516
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2517 /* 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
2518 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
2519
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2520 /* 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
2521 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
2522
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2523 /* Attributes. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2524 mask, &a));
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
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2527 XSETWINDOW (bar->window, window);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2528 XSETINT (bar->top, top);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2529 XSETINT (bar->left, left);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2530 XSETINT (bar->width, width);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2531 XSETINT (bar->height, height);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2532 XSETINT (bar->start, 0);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2533 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
2534 bar->dragging = Qnil;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2535
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2536 /* 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
2537 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
2538 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
2539 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
2540 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
2541 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
2542
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
2543 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
2544
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2545 UNBLOCK_INPUT;
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 return bar;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2548 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2549
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2550 /* 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
2551 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
2552 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
2553 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
2554 events.)
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 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
2557 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
2558 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
2559 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
2560 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
2561 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2562 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
2563 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
2564 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
2565 int rebuild;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2566 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2567 int dragging = ! NILP (bar->dragging);
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2568 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
2569 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
2570 GC gc = f->output_data.x->normal_gc;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2571
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2572 /* 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
2573 if (! rebuild
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2574 && 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
2575 && 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
2576 return;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2577
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2578 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2579
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2580 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2581 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
2582 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
2583 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
2584
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2585 /* 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
2586 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
2587 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2588 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
2589
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2590 if (start < 0)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2591 start = 0;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2592 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
2593 start = top_range;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2594 end = start + length;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2595
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2596 if (end < start)
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2597 end = start;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2598 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
2599 end = top_range;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2600 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2601
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2602 /* 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
2603 XSETINT (bar->start, start);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2604 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
2605
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2606 /* 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
2607 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
2608 end = top_range;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2609
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2610 /* 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
2611 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
2612 that many pixels tall. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2613 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
2614
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2615 /* 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
2616 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
2617 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
2618 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
2619
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2620 /* 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
2621 VERTICAL_SCROLL_BAR_LEFT_BORDER,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2622 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
2623 inside_width, start,
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2624 False);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2625
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2626 /* 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
2627 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
2628
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2629 /* x, y, width, height */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2630 VERTICAL_SCROLL_BAR_LEFT_BORDER,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2631 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
2632 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
2633
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2634
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2635 /* 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
2636 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
2637 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
2638 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
2639
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2640 /* 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
2641 VERTICAL_SCROLL_BAR_LEFT_BORDER,
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2642 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
2643 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
2644 False);
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2645
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2646 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2647
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2648 UNBLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2649 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2650
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3585
diff changeset
2651 /* 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
2652 window configurations. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2653 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2654 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
2655 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
2656 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
2657 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
2658 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
2659 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
2660
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2661 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2662
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2663 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2664 XWindowChanges wc;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2665 unsigned int mask = 0;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2666
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2667 wc.x = left;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2668 wc.y = top;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2669 wc.width = width;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2670 wc.height = height;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2671
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2672 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
2673 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
2674 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
2675 if (height != XINT (bar->height)) mask |= CWHeight;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2676
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2677 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
2678 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
2679 mask, &wc);
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2680 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2681
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2682 XSETINT (bar->left, left);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2683 XSETINT (bar->top, top);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2684 XSETINT (bar->width, width);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2685 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
2686
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2687 UNBLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2688 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2689
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2690 /* 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
2691 to nil. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2692 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2693 x_scroll_bar_remove (bar)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2694 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
2695 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2696 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
2697
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2698 BLOCK_INPUT;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2699
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2700 /* 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
2701 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
2702
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2703 /* 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
2704 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
2705
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2706 UNBLOCK_INPUT;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2707 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2708
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2709 /* 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
2710 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
2711 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
2712 create one. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2713 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2714 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
2715 struct window *window;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2716 int portion, whole, position;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2717 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2718 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
2719 int top = XINT (window->top);
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2720 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
2721 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
2722
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2723 /* 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
2724 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
2725 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
2726 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
2727 = (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
2728 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
2729 : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->output_data.x->font)));
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2730 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
2731
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2732 struct scroll_bar *bar;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2733
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2734 /* Does the scroll bar exist yet? */
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2735 if (NILP (window->vertical_scroll_bar))
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2736 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
2737 pixel_top, pixel_left,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2738 pixel_width, pixel_height);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2739 else
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2740 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2741 /* 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
2742 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
2743 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
2744 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2745
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2746 /* 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
2747 dragged. */
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2748 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
2749 {
10287
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2750 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
2751
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2752 if (whole == 0)
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2753 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
2754 else
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2755 {
3686
910ea1d66bfd * xterm.c (XTset_vertical_scroll_bar): Use double type for
Jim Blandy <jimb@redhat.com>
parents: 3683
diff changeset
2756 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
2757 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
2758
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2759 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
2760 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2761 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2762
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2763 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
2764 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2765
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2766
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2767 /* 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
2768 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
2769 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
2770 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
2771 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
2772 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
2773 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
2774
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2775 /* 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
2776 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
2777 `*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
2778 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2779 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
2780 FRAME_PTR frame;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2781 {
13205
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2782 /* Transfer all the scroll bars to FRAME_CONDEMNED_SCROLL_BARS. */
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2783 while (! NILP (FRAME_SCROLL_BARS (frame)))
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2784 {
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2785 Lisp_Object bar;
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2786 bar = FRAME_SCROLL_BARS (frame);
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2787 FRAME_SCROLL_BARS (frame) = XSCROLL_BAR (bar)->next;
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2788 XSCROLL_BAR (bar)->next = FRAME_CONDEMNED_SCROLL_BARS (frame);
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2789 XSCROLL_BAR (bar)->prev = Qnil;
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2790 if (! NILP (FRAME_CONDEMNED_SCROLL_BARS (frame)))
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2791 XSCROLL_BAR (FRAME_CONDEMNED_SCROLL_BARS (frame))->prev = bar;
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2792 FRAME_CONDEMNED_SCROLL_BARS (frame) = bar;
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
2793 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2794 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2795
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2796 /* 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
2797 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
2798 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2799 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
2800 struct window *window;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2801 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2802 struct scroll_bar *bar;
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2803
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2804 /* 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
2805 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
2806 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2807
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2808 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
2809
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2810 /* 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
2811 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2812 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
2813
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2814 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
2815 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2816 /* 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
2817 the lists. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2818 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
2819 /* 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
2820 return;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2821 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
2822 window->vertical_scroll_bar))
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2823 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
2824 else
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2825 /* 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
2826 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
2827 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2828 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2829 else
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2830 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
2831
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2832 if (! NILP (bar->next))
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2833 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
2834
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2835 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
2836 bar->prev = Qnil;
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2837 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
2838 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
2839 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
2840 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2841 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2842
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2843 /* 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
2844 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
2845 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2846 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
2847 FRAME_PTR f;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2848 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2849 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
2850
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2851 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
2852
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2853 /* 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
2854 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
2855 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
2856
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
2857 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
2858 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2859 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
2860
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2861 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
2862
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2863 next = b->next;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2864 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
2865 }
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2866
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2867 /* 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
2868 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
2869 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2870
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2871
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2872 /* 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
2873
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2874 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
2875 mark bits. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2876 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2877 x_scroll_bar_expose (bar, event)
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2878 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
2879 XEvent *event;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2880 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2881 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
2882 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window)));
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
2883 GC gc = f->output_data.x->normal_gc;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2884
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2885 BLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2886
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2887 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
2888
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2889 /* 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
2890 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
2891
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2892 /* 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
2893 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
2894
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2895 UNBLOCK_INPUT;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2896 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2897
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2898 /* 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
2899 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
2900
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2901 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
2902 mark bits. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2903 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2904 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
2905 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
2906 XEvent *event;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2907 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
2908 {
10287
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2909 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
2910 abort ();
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2911
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2912 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
2913 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
2914 emacs_event->modifiers
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2915 = (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
2916 (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
2917 event->xbutton.state)
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2918 | (event->type == ButtonRelease
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2919 ? up_modifier
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2920 : down_modifier));
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2921 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
2922 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
2923 {
10287
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2924 int internal_height
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2925 = 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
2926 int top_range
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
2927 = 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
2928 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
2929
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2930 if (y < 0) y = 0;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2931 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
2932
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2933 if (y < XINT (bar->start))
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2934 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
2935 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
2936 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
2937 else
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2938 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
2939
5440f00480e6 * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2923
diff changeset
2940 /* 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
2941 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
2942 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
2943 #if 0
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2944 /* 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
2945 holding it. */
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2946 if (event->type == ButtonPress
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2947 && 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
2948 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
2949 #endif
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2950
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2951 /* 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
2952 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
2953 && ! NILP (bar->dragging))
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2954 {
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2955 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
2956 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
2957
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2958 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
2959 bar->dragging = Qnil;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2960 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2961
2958
3124e6244d1a * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents: 2953
diff changeset
2962 /* 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
2963 #if 0
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
2964 /* 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
2965 the handle. */
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2966 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
2967 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
2968 else
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2969 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
2970 #else
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2971 XSETINT (emacs_event->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
2972 #endif
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
2973
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2974 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
2975 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2976 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2977
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2978 /* 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
2979
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2980 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
2981 mark bits. */
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2982 static void
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
2983 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
2984 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
2985 XEvent *event;
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2986 {
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
2987 FRAME_PTR f = XFRAME (XWINDOW (bar->window)->frame);
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
2988
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2989 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
2990
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
2991 f->mouse_moved = 1;
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
2992 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
2993
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2994 /* 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
2995 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
2996 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
2997 /* 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
2998 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
2999
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3000 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
3001 {
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3002 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
3003
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3004 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
3005 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3006 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3007
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3008 /* 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
3009 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
3010 {
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3011 int dummy;
8279
4cde734c20e8 (note_mouse_movement): Use proper data type for window
Richard M. Stallman <rms@gnu.org>
parents: 8164
diff changeset
3012 Window dummy_window;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
3013
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3014 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
3015 &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
3016 &dummy, &dummy, &dummy, &dummy,
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3017 (unsigned int *) &dummy);
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3018 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3019 }
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3020
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3021 /* 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
3022 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
3023 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
3024 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
3025 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
3026 Lisp_Object *bar_window;
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3027 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
3028 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
3029 unsigned long *time;
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3030 {
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3031 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
3032 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
3033 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
3034 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
3035 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
3036 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
3037 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
3038
1803
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
3039 BLOCK_INPUT;
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
3040
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3041 /* 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
3042 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
3043 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
3044
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3045 /* 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
3046 &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
3047 &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
3048
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3049 /* 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
3050 &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
3051
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3052 /* 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
3053 &dummy_mask))
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3054 ;
2982
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3055 else
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3056 {
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3057 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
3058 = 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
3059 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
3060 = 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
3061
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3062 win_y -= 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
3063
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3064 if (! 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
3065 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
3066
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3067 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
3068 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
3069 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
3070 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
3071
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
3072 *fp = f;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3073 *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
3074
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3075 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
3076 *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
3077 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
3078 *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
3079 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
3080 *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
3081 else
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3082 *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
3083
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
3084 XSETINT (*x, win_y);
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
3085 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
3086
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
3087 f->mouse_moved = 0;
2982
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3088 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
3089 }
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3090
44ed08628516 * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents: 2977
diff changeset
3091 *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
3092
1803
5752a95053f2 * xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents: 1793
diff changeset
3093 UNBLOCK_INPUT;
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3094 }
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
3095
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3096
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3097 /* 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
3098 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
3099 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
3100 redraw them. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3101
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
3102 x_scroll_bar_clear (f)
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3103 FRAME_PTR f;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3104 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3105 Lisp_Object bar;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3106
9101
1cd322ea379a (x_scroll_bar_clear): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9011
diff changeset
3107 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
3108 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
3109 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
3110 0, 0, 0, 0, True);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3111 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
3112
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3113 /* 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
3114 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
3115 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
3116
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3117 void
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3118 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
3119 XEvent event;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3120 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3121 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
3122 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
3123
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3124 BLOCK_INPUT;
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3125
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
3126 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
3127 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
3128 if (f)
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3129 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3130 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
3131 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3132 f->async_visible = 1;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3133 f->async_iconified = 0;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3134 SET_FRAME_GARBAGED (f);
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3135 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3136 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3137 {
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
3138 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
3139 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
3140 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
3141 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3142 }
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3143 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3144 {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3145 struct scroll_bar *bar
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3146 = x_window_to_scroll_bar (event.xexpose.window);
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
3147
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3148 if (bar)
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3149 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
3150 }
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3151
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
3152 UNBLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3153 }
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3154
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3155 /* 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
3156
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3157 struct selection_event_queue
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3158 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3159 XEvent event;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3160 struct selection_event_queue *next;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3161 };
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3162
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3163 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
3164
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3165 /* 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
3166 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
3167
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3168 /* 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
3169
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3170 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
3171 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
3172 FRAME_PTR f;
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3173 XEvent *event;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3174 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3175 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
3176 = (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
3177
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
3178 if (queue_tmp != NULL)
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3179 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3180 queue_tmp->event = *event;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3181 queue_tmp->next = queue;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3182 queue = queue_tmp;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3183 }
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3184 }
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3185
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3186 /* 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
3187 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
3188
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3189 static void
10634
de7beeb9f02c (x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents: 10609
diff changeset
3190 x_unqueue_events (display)
de7beeb9f02c (x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents: 10609
diff changeset
3191 Display *display;
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3192 {
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
3193 while (queue != NULL)
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3194 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3195 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
3196 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
3197 queue = queue_tmp->next;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3198 free ((char *)queue_tmp);
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3199 }
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3200 }
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3201
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3202 /* Start queuing SelectionRequest events. */
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3203
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3204 void
10634
de7beeb9f02c (x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents: 10609
diff changeset
3205 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
3206 Display *display;
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3207 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3208 x_queue_selection_requests++;
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3209 }
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3210
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3211 /* Stop queuing SelectionRequest events. */
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3212
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3213 void
10634
de7beeb9f02c (x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents: 10609
diff changeset
3214 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
3215 Display *display;
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3216 {
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3217 x_queue_selection_requests--;
10634
de7beeb9f02c (x_unqueue_events): Arg is now a Display *.
Richard M. Stallman <rms@gnu.org>
parents: 10609
diff changeset
3218 x_unqueue_events (display);
8353
525e990ca9d2 (x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 8291
diff changeset
3219 }
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3220
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3221 /* The main X event-reading loop - XTread_socket. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3222
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3223 /* Timestamp of enter window event. This is only used by XTread_socket,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3224 but we have to put it out here, since static variables within functions
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3225 sometimes don't work. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3226 static Time enter_timestamp;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3227
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3228 /* 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
3229 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
3230 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
3231 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
3232
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3233 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
3234 given for enter_timestamp, above. */
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3235 static XComposeStatus compose_status;
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
3236
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3237 /* Record the last 100 characters stored
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3238 to help debug the loss-of-chars-during-GC problem. */
12657
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
3239 static int temp_index;
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
3240 static short temp_buffer[100];
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3241
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3242 /* 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
3243 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
3244 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
3245
12657
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
3246 /* When we find no input here, we occasionally do a no-op command
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
3247 to verify that the X server is still running and we can still talk with it.
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
3248 We try all the open displays, one by one.
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
3249 This variable is used for cycling thru the displays. */
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
3250 static struct x_display_info *next_noop_dpyinfo;
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
3251
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3252 /* Read events coming from the X server.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3253 This routine is called by the SIGIO handler.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3254 We return as soon as there are no more events to be read.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3255
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3256 Events representing keys are stored in buffer BUFP,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3257 which can hold up to NUMCHARS characters.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3258 We return the number of characters stored into the buffer,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3259 thus pretending to be `read'.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3260
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3261 WAITP is nonzero if we should block until input arrives.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3262 EXPECTED is nonzero if the caller knows input is available. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3263
1530
a7f8a1fe258e * xterm.c (x_convert_modifiers): Declare this to return an
Jim Blandy <jimb@redhat.com>
parents: 1436
diff changeset
3264 int
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3265 XTread_socket (sd, bufp, numchars, waitp, expected)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3266 register int sd;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3267 register struct input_event *bufp;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3268 register int numchars;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3269 int waitp;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3270 int expected;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3271 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3272 int count = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3273 int nbytes = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3274 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3275 int items_pending; /* How many items are in the X queue. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3276 XEvent event;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3277 struct frame *f;
3938
83d870a52936 * xterm.c (XTread_socket): Initialize event_found to zero, and
Jim Blandy <jimb@redhat.com>
parents: 3924
diff changeset
3278 int event_found = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3279 int prefix;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3280 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
3281 struct x_display_info *dpyinfo;
13232
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3282 #ifdef HAVE_X_I18N
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3283 Status status_return;
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3284 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3285
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
3286 if (interrupt_input_blocked)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3287 {
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
3288 interrupt_input_pending = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3289 return -1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3290 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3291
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
3292 interrupt_input_pending = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3293 BLOCK_INPUT;
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
3294
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
3295 /* 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
3296 input_signal_count++;
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
3297
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3298 if (numchars <= 0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3299 abort (); /* Don't think this happens. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3300
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3301 /* 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
3302 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
3303 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
3304 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3305 #if 0 /* This ought to be unnecessary; let's verify it. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3306 #ifdef FIOSNBIO
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3307 /* 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
3308 non-blocking, and then looks for EWOULDBLOCK. If O_NDELAY is set,
14165
65e51231924e (XTread_socket): For selection_clear_event and
Richard M. Stallman <rms@gnu.org>
parents: 13898
diff changeset
3309 FIOSNBIO is ignored, and instead of signaling EWOULDBLOCK,
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3310 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
3311 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
3312 #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
3313 #endif
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3314
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3315 #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
3316 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
3317 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
3318 for X connections. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3319 #ifndef SIGIO
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3320 #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
3321 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
3322 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3323 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
3324 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
3325 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
3326 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
3327 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
3328 #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
3329 #endif /* SIGIO */
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3330 #endif
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3331
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3332 /* 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
3333 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
3334 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3335 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
3336 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
3337 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3338
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3339 while (XPending (dpyinfo->display) != 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3340 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3341 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
3342 event_found = 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3343
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3344 switch (event.type)
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 case ClientMessage:
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3347 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3348 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
3349 == 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
3350 && event.xclient.format == 32)
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3351 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3352 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
3353 == 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
3354 {
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
3355 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
3356 /* 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
3357 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
3358 since that might be an event for a deleted frame. */
13232
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3359 #ifdef HAVE_X_I18N
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3360 /* Not quite sure this is needed -pd */
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3361 if (f)
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3362 XSetICFocus (FRAME_XIC (f));
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3363 #endif
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3364 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3365 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
3366 event.xclient.window,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3367 RevertToPointerRoot,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3368 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
3369 /* 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
3370 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3371 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
3372 == dpyinfo->Xatom_wm_save_yourself)
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3373 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3374 /* 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
3375 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
3376 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
3377 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
3378 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
3379 if (numchars > 0)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3380 {
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
3381 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
3382 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
3383
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3384 /* 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
3385 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
3386 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
3387 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
3388 event.xclient.window,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3389 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
3390 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3391 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
3392 event.xclient.window,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3393 0, 0);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3394 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3395 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3396 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
3397 == 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
3398 {
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
3399 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
3400 = 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
3401 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
3402
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3403 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3404 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3405 if (numchars == 0)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3406 abort ();
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3407
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3408 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
3409 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
3410 bufp++;
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 count += 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3413 numchars -= 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3414 }
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3415 }
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3416 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3417 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
3418 == dpyinfo->Xatom_wm_configure_denied)
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3419 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3420 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3421 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
3422 == 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
3423 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3424 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
3425 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
3426 = 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
3427
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3428 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
3429 new_y = event.xclient.data.s[1];
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3430
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
3431 if (f)
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3432 {
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3433 f->output_data.x->left_pos = new_x;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3434 f->output_data.x->top_pos = new_y;
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3435 }
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3436 }
13507
9a9f459075af (HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents: 13363
diff changeset
3437 #ifdef HACK_EDITRES
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3438 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
3439 == dpyinfo->Xatom_editres)
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3440 {
11198
571306c7b038 New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11166
diff changeset
3441 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
3442 = x_any_window_to_frame (dpyinfo, event.xclient.window);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3443 _XEditResCheckMessages (f->output_data.x->widget, NULL,
11198
571306c7b038 New arg DPYINFO to all callers of x_window_to_frame, x_any_window_to_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11166
diff changeset
3444 &event, NULL);
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
3445 }
13507
9a9f459075af (HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents: 13363
diff changeset
3446 #endif /* HACK_EDITRES */
642
b0ddc138b0b5 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 621
diff changeset
3447 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3448 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3449
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3450 case SelectionNotify:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3451 #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
3452 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
3453 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3454 #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
3455 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
3456 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3457
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3458 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
3459 #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
3460 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
3461 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3462 #endif /* USE_X_TOOLKIT */
6941
a914781ef58a (Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents: 6934
diff changeset
3463 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3464 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
3465
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3466 if (numchars == 0)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3467 abort ();
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 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
3470 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
3471 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
3472 SELECTION_EVENT_TIME (bufp) = eventp->time;
14165
65e51231924e (XTread_socket): For selection_clear_event and
Richard M. Stallman <rms@gnu.org>
parents: 13898
diff changeset
3473 bufp->frame_or_window = Qnil;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3474 bufp++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3475
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3476 count += 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3477 numchars -= 1;
6941
a914781ef58a (Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents: 6934
diff changeset
3478 }
9704
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 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
3482 #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
3483 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
3484 goto OTHER;
6984
8e9465c13702 (XTread_socket): Delete the non-NEW_SELECTIONS code
Richard M. Stallman <rms@gnu.org>
parents: 6983
diff changeset
3485 #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
3486 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
3487 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
3488 &event);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3489 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3490 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3491 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
3492
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3493 if (numchars == 0)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3494 abort ();
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3495
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3496 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
3497 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
3498 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
3499 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
3500 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
3501 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
3502 SELECTION_EVENT_TIME (bufp) = eventp->time;
14165
65e51231924e (XTread_socket): For selection_clear_event and
Richard M. Stallman <rms@gnu.org>
parents: 13898
diff changeset
3503 bufp->frame_or_window = Qnil;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3504 bufp++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3505
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3506 count += 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3507 numchars -= 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3508 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3509 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3510
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3511 case PropertyNotify:
6984
8e9465c13702 (XTread_socket): Delete the non-NEW_SELECTIONS code
Richard M. Stallman <rms@gnu.org>
parents: 6983
diff changeset
3512 #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
3513 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
3514 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3515 #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
3516 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
3517 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3518
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3519 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
3520 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
3521 if (f)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3522 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3523 int x, y;
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3524 f->output_data.x->parent_desc = event.xreparent.parent;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3525 x_real_positions (f, &x, &y);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3526 f->output_data.x->left_pos = x;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3527 f->output_data.x->top_pos = y;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3528 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3529 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3530
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3531 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
3532 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
3533 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3534 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3535 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
3536 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3537 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
3538 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
3539 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
3540 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3541 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
3542 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
3543 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
3544 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
3545 event.xexpose.width, event.xexpose.height);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3546 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3547 else
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3548 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3549 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
3550 = 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
3551
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3552 if (bar)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3553 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
3554 #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
3555 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3556 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3557 #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
3558 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3559 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3560
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3561 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
3562 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
3563 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
3564 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
3565 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3566 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3567 dumprectangle (f,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3568 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
3569 event.xgraphicsexpose.width,
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3570 event.xgraphicsexpose.height);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3571 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3572 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3573 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3574 goto OTHER;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3575 #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
3576 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3577
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3578 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
3579 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
3580 available */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3581 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3582
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3583 case UnmapNotify:
12750
7e5276da6270 (XTread_socket): For UnmapNotify, use x_top_window_to_frame.
Richard M. Stallman <rms@gnu.org>
parents: 12667
diff changeset
3584 f = x_top_window_to_frame (dpyinfo, event.xunmap.window);
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3585 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
3586 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
3587 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3588 /* 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
3589 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
3590 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
3591 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
3592 /* 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
3593 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
3594 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
3595 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
3596 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
3597 f->async_iconified = 1;
9823
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3598
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3599 bufp->kind = iconify_event;
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3600 XSETFRAME (bufp->frame_or_window, f);
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3601 bufp++;
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3602 count++;
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3603 numchars--;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3604 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3605 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3606
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3607 case MapNotify:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3608 /* 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
3609 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
3610 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
3611 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3612 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3613 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
3614 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
3615
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3616 /* 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
3617 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
3618 SET_FRAME_GARBAGED (f);
9823
e6dbda62fd61 (XTread_socket): Generate iconify and deiconify events.
Karl Heuer <kwzh@gnu.org>
parents: 9763
diff changeset
3619
11348
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3620 if (f->iconified)
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3621 {
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3622 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
3623 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
3624 bufp++;
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3625 count++;
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3626 numchars--;
e366abc2c753 (XTread_socket): Make deiconify event only if frame was iconified.
Richard M. Stallman <rms@gnu.org>
parents: 11259
diff changeset
3627 }
11921
6ecaa3fac4e4 (XTread_socket): For MapNotify, call record_asynch_buffer_change.
Karl Heuer <kwzh@gnu.org>
parents: 11915
diff changeset
3628 else
6ecaa3fac4e4 (XTread_socket): For MapNotify, call record_asynch_buffer_change.
Karl Heuer <kwzh@gnu.org>
parents: 11915
diff changeset
3629 /* 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
3630 to update the frame titles
6ecaa3fac4e4 (XTread_socket): For MapNotify, call record_asynch_buffer_change.
Karl Heuer <kwzh@gnu.org>
parents: 11915
diff changeset
3631 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
3632 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
3633 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3634 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3635
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3636 /* 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
3637 case VisibilityNotify:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3638 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3639
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3640 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
3641 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
3642
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3643 if (f != 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3644 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3645 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
3646 /* 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
3647 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
3648 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
3649 int modifiers;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3650
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3651 event.xkey.state
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3652 |= 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
3653 extra_keyboard_modifiers);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3654 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
3655
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3656 /* 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
3657
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3658 /* 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
3659 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
3660 event.xkey.state &= ~ControlMask;
12431
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
3661 event.xkey.state &= ~(dpyinfo->meta_mod_mask
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
3662 | dpyinfo->super_mod_mask
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
3663 | dpyinfo->hyper_mod_mask
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
3664 | dpyinfo->alt_mod_mask);
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
3665
13232
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3666 #ifdef HAVE_X_I18N
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3667 if (FRAME_XIC (f))
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3668 {
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3669 /* The necessity of the following line took me
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3670 a full work-day to decipher from the docs!! */
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3671 if (XFilterEvent (&event, None))
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3672 break;
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3673 nbytes = XmbLookupString (FRAME_XIC (f),
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3674 &event.xkey, copy_buffer,
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3675 80, &keysym,
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3676 &status_return);
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3677 }
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3678 else
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3679 nbytes = XLookupString (&event.xkey, copy_buffer,
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3680 80, &keysym, &compose_status);
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3681 #else
10287
2e96f9f98276 (x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents: 10274
diff changeset
3682 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
3683 80, &keysym, &compose_status);
13232
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3684 #endif
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3685
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3686 orig_keysym = keysym;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3687
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3688 if (numchars > 1)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3689 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3690 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
3691 || keysym == XK_Delete
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3692 || 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
3693 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */
3218
0069a30d083f (XTread_socket, case KeyPress) [HPUX]:
Richard M. Stallman <rms@gnu.org>
parents: 3135
diff changeset
3694 #ifdef HPUX
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3695 /* 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
3696 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
3697 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
3698 incorrectly. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3699 || ((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
3700 && (unsigned)(keysym) < XK_KP_Space)
3218
0069a30d083f (XTread_socket, case KeyPress) [HPUX]:
Richard M. Stallman <rms@gnu.org>
parents: 3135
diff changeset
3701 #endif
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3702 #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
3703 || orig_keysym == XK_dead_circumflex
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3704 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3705 #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
3706 || orig_keysym == XK_dead_grave
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3707 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3708 #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
3709 || orig_keysym == XK_dead_tilde
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3710 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3711 #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
3712 || orig_keysym == XK_dead_diaeresis
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3713 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3714 #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
3715 || orig_keysym == XK_dead_macron
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3716 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3717 #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
3718 || orig_keysym == XK_dead_degree
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3719 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3720 #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
3721 || orig_keysym == XK_dead_acute
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3722 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3723 #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
3724 || orig_keysym == XK_dead_cedilla
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3725 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3726 #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
3727 || orig_keysym == XK_dead_breve
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3728 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3729 #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
3730 || orig_keysym == XK_dead_ogonek
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3731 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3732 #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
3733 || orig_keysym == XK_dead_caron
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3734 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3735 #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
3736 || orig_keysym == XK_dead_doubleacute
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3737 #endif
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3738 #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
3739 || orig_keysym == XK_dead_abovedot
5228
c094c1df2e87 (XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents: 5156
diff changeset
3740 #endif
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3741 || 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
3742 || 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
3743 /* 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
3744 || (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
3745 && ! (IsModifierKey (orig_keysym)
4244
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3746 #ifndef HAVE_X11R5
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3747 #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
3748 || ((unsigned)(orig_keysym) == XK_Mode_switch)
4244
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3749 #endif
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3750 #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
3751 || ((unsigned)(orig_keysym) == XK_Num_Lock)
4244
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3752 #endif
bc70363458c3 (XTread_socket) [! HAVE_X11R5]:
Richard M. Stallman <rms@gnu.org>
parents: 4147
diff changeset
3753 #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
3754 ))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3755 {
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3756 if (temp_index == sizeof temp_buffer / sizeof (short))
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3757 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
3758 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
3759 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
3760 bufp->code = keysym;
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
3761 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
3762 bufp->modifiers
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
3763 = 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
3764 modifiers);
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 642
diff changeset
3765 bufp->timestamp = event.xkey.time;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3766 bufp++;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3767 count++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3768 numchars--;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3769 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3770 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
3771 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3772 register int i;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3773
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3774 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
3775 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3776 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
3777 temp_index = 0;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3778 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
3779 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
3780 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
3781 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
3782 bufp->modifiers
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3783 = 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
3784 modifiers);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3785 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
3786 bufp++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3787 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3788
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3789 count += nbytes;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3790 numchars -= nbytes;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3791 }
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 abort ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3794 }
2064
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3795 else
092ea2e7316e (XTread_socket):
Richard M. Stallman <rms@gnu.org>
parents: 2047
diff changeset
3796 abort ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3797 }
13898
dceb33c07f9e (XTread_socket): Pass KeyPress events to the toolkit.
Richard M. Stallman <rms@gnu.org>
parents: 13884
diff changeset
3798 goto OTHER;
9704
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 /* 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
3801 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
3802 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
3803 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
3804 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
3805
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3806 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
3807 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
3808
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3809 if (event.xcrossing.focus) /* Entered Window */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3810 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3811 /* 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
3812 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
3813 || !(f->auto_lower)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3814 || (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
3815 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
3816 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
3817 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
3818 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3819 }
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
3820 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
3821 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
3822 /* 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
3823 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
3824 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3825 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
3826 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3827
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3828 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
3829 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
3830 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
3831 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
3832 if (f)
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
3833 x_new_focus_frame (dpyinfo, f);
13205
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
3834
13232
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3835 #ifdef HAVE_X_I18N
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3836 if (f && FRAME_XIC (f))
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3837 XSetICFocus (FRAME_XIC (f));
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3838 #endif
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3839
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3840 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3841
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3842 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
3843 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
3844 if (f)
7169
c21fcad6f1f5 (XTread_socket): Only top window cares about LeaveNotify.
Karl Heuer <kwzh@gnu.org>
parents: 7167
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 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
3847 /* 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
3848 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
3849 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
3850
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3851 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
3852 x_mouse_leave (dpyinfo);
7169
c21fcad6f1f5 (XTread_socket): Only top window cares about LeaveNotify.
Karl Heuer <kwzh@gnu.org>
parents: 7167
diff changeset
3853 else
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3854 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
3855 if (f == dpyinfo->x_focus_event_frame)
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
3856 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
3857 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
3858 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
3859 }
7169
c21fcad6f1f5 (XTread_socket): Only top window cares about LeaveNotify.
Karl Heuer <kwzh@gnu.org>
parents: 7167
diff changeset
3860 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3861 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3862
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3863 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
3864 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
3865 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
3866 && 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
3867 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
3868 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
3869 x_new_focus_frame (dpyinfo, 0);
13205
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
3870
13232
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3871 #ifdef HAVE_X_I18N
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3872 if (f && FRAME_XIC (f))
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3873 XUnsetICFocus (FRAME_XIC (f));
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3874 #endif
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
3875
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3876 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3877
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3878 case MotionNotify:
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
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 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
3881 && 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
3882 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
3883 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
3884 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
3885 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3886 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
3887 else
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 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
3890 = 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
3891
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3892 if (bar)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3893 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
3894
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3895 /* 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
3896 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
3897 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
3898 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3899 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3900 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3901
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3902 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
3903 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
3904 if (f
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
3905 #ifdef USE_X_TOOLKIT
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3906 && (event.xconfigure.window == XtWindow (f->output_data.x->widget))
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
3907 #endif
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3908 )
3030
2c5ea1c98256 (XTread_socket): For ConfigureNotify event,
Richard M. Stallman <rms@gnu.org>
parents: 3016
diff changeset
3909 {
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3910 #ifndef USE_X_TOOLKIT
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3911 /* 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
3912 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
3913 of the EmacsFrame widget. */
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3914
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3915 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
3916 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
3917
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3918 /* 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
3919 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
3920 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
3921 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
3922 || rows != f->height
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3923 || event.xconfigure.width != f->output_data.x->pixel_width
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3924 || event.xconfigure.height != f->output_data.x->pixel_height)
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3925 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3926 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
3927 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
3928 }
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3929 #endif
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3930
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3931 /* 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
3932 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
3933 if (1
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3934 #ifndef USE_X_TOOLKIT
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3935 && ! event.xconfigure.send_event
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3936 #endif
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3937 )
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3938 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3939 Window win, child;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3940 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
3941
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3942 /* 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
3943 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
3944 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
3945 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
3946 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
3947 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
3948
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3949 /* 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
3950 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
3951 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
3952
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3953 /* 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
3954 -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
3955 -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
3956 &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
3957
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3958 /* Child of win. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3959 &child);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3960 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
3961 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
3962 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3963
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3964 f->output_data.x->pixel_width = event.xconfigure.width;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3965 f->output_data.x->pixel_height = event.xconfigure.height;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3966 f->output_data.x->left_pos = event.xconfigure.x;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3967 f->output_data.x->top_pos = event.xconfigure.y;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3968
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3969 /* 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
3970 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
3971 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3972 int x, y;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3973 x_real_positions (f, &x, &y);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3974 f->output_data.x->left_pos = x;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3975 f->output_data.x->top_pos = y;
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3976 /* 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
3977 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
3978 /* #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
3979 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
3980 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3981 /* 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
3982 we must put them below top_pos in the future. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
3983 f->output_data.x->win_gravity = NorthWestGravity;
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
3984 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
3985 }
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3986 /* #endif */
7738
a810335742bb (x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents: 7706
diff changeset
3987 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3988 }
11436
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
3989 goto OTHER;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3990
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3991 case ButtonPress:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3992 case ButtonRelease:
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
3993 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3994 /* 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
3995 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
3996 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
3997 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
3998
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
3999 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
4000
10274
83aaf59dabbe (XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 10223
diff changeset
4001 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
4002 && 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
4003 f = last_mouse_frame;
83aaf59dabbe (XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 10223
diff changeset
4004 else
12657
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4005 f = x_window_to_frame (dpyinfo, event.xbutton.window);
10274
83aaf59dabbe (XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 10223
diff changeset
4006
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4007 if (f)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4008 {
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
4009 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
4010 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
4011 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4012 else
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4013 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4014 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
4015 = 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
4016
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4017 if (bar)
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4018 x_scroll_bar_handle_click (bar, &event, &emacs_event);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4019 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4020
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4021 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
4022 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4023 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
4024 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
4025 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4026 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4027 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4028 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
4029 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4030
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4031 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
4032 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4033 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
4034 bufp++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4035 count++;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4036 numchars--;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4037 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4038
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4039 #ifdef USE_X_TOOLKIT
12657
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4040 f = x_menubar_window_to_frame (dpyinfo, event.xbutton.window);
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4041 /* For a down-event in the menu bar,
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4042 don't pass it to Xt right now.
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4043 Instead, save it away
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4044 and we will pass it to Xt from kbd_buffer_get_event.
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4045 That way, we can run some Lisp code first. */
13561
21b6b8f50143 (XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents: 13507
diff changeset
4046 if (f && event.type == ButtonPress
21b6b8f50143 (XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents: 13507
diff changeset
4047 /* Verify the event is really within the menu bar
21b6b8f50143 (XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents: 13507
diff changeset
4048 and not just sent to it due to grabbing. */
21b6b8f50143 (XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents: 13507
diff changeset
4049 && event.xbutton.x >= 0
21b6b8f50143 (XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents: 13507
diff changeset
4050 && event.xbutton.x < f->output_data.x->pixel_width
21b6b8f50143 (XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents: 13507
diff changeset
4051 && event.xbutton.y >= 0
21b6b8f50143 (XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents: 13507
diff changeset
4052 && event.xbutton.y < f->output_data.x->menubar_height
21b6b8f50143 (XTread_socket): Verify a ButtonPress was actually in the
Richard M. Stallman <rms@gnu.org>
parents: 13507
diff changeset
4053 && event.xbutton.same_screen)
12657
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4054 {
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4055 if (f->output_data.x->saved_button_event == 0)
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4056 f->output_data.x->saved_button_event
12657
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4057 = (XButtonEvent *) xmalloc (sizeof (XButtonEvent));
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4058 bcopy (&event, f->output_data.x->saved_button_event,
12657
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4059 sizeof (XButtonEvent));
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4060 if (numchars >= 1)
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4061 {
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4062 bufp->kind = menu_bar_activate_event;
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4063 XSETFRAME (bufp->frame_or_window, f);
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4064 bufp++;
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4065 count++;
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4066 numchars--;
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4067 }
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4068 }
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4069 else
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4070 goto OTHER;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
4071 #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
4072 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4073 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4074
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4075 case CirculateNotify:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4076 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4077 case CirculateRequest:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4078 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4079
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4080 case MappingNotify:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4081 /* 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
4082 local cache. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4083 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
4084 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4085 case MappingModifier:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4086 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
4087 /* 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
4088 case MappingKeyboard:
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4089 XRefreshKeyboardMapping (&event.xmapping);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4090 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4091 goto OTHER;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4092
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4093 default:
13898
dceb33c07f9e (XTread_socket): Pass KeyPress events to the toolkit.
Richard M. Stallman <rms@gnu.org>
parents: 13884
diff changeset
4094 OTHER:
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4095 #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
4096 BLOCK_INPUT;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4097 XtDispatchEvent (&event);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4098 UNBLOCK_INPUT;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4099 #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
4100 break;
1436
e7c5faab6571 * xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents: 1389
diff changeset
4101 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4102 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4103 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4104
8485
6e4b40c80021 (XTread_socket): Don't test X_IO_BUG; make that code unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 8437
diff changeset
4105 /* 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
4106 when the window is destroyed. Detect that. (1994.) */
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4107 if (! event_found)
7916
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4108 {
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4109 /* 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
4110 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
4111 B. Bretthauer, 1994 */
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4112 x_noop_count++;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4113 if (x_noop_count >= 100)
7916
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4114 {
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4115 x_noop_count=0;
12657
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4116
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4117 if (next_noop_dpyinfo == 0)
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4118 next_noop_dpyinfo = x_display_list;
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4119
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4120 XNoOp (next_noop_dpyinfo->display);
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4121
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4122 /* Each time we get here, cycle through the displays now open. */
05b7a5d25df6 (next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12530
diff changeset
4123 next_noop_dpyinfo = next_noop_dpyinfo->next;
7916
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4124 }
50e9e0c8806a (x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7905
diff changeset
4125 }
5753
eb44ecad5557 (XTread_socket): Add X_IO_BUG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 5740
diff changeset
4126
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
4127 /* 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
4128 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
4129 /* ??? 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
4130 if (pending_autoraise_frame)
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
4131 {
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
4132 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
4133 pending_autoraise_frame = 0;
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
4134 }
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
4135
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4136 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4137 return count;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4138 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4139
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4140 /* Drawing the cursor. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4141
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4142
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4143 /* Draw a hollow box cursor on frame F at X, Y.
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4144 Don't change the inside of the box. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4145
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4146 static void
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4147 x_draw_box (f, x, y)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4148 struct frame *f;
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4149 int x, y;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4150 {
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4151 int left = CHAR_TO_PIXEL_COL (f, x);
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4152 int top = CHAR_TO_PIXEL_ROW (f, y);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4153 int width = FONT_WIDTH (f->output_data.x->font);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4154 int height = f->output_data.x->line_height;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4155
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4156 XDrawRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4157 f->output_data.x->cursor_gc,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4158 left, top, width - 1, height - 1);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4159 }
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 /* Clear the cursor of frame F to background color,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4162 and mark the cursor as not shown.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4163 This is used when the text where the cursor is
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4164 is about to be rewritten. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4165
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4166 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4167 clear_cursor (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4168 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4169 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4170 int mask;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4171
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4172 if (! FRAME_VISIBLE_P (f)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4173 || f->phys_cursor_x < 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4174 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4175
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4176 x_display_cursor (f, 0);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4177 f->phys_cursor_x = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4178 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4179
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4180 /* 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
4181 HIGHLIGHT. HIGHLIGHT is as defined for dumpglyphs. Return the
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4182 glyph drawn. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4183
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4184 static void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4185 x_draw_single_glyph (f, row, column, glyph, highlight)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4186 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4187 int row, column;
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4188 GLYPH glyph;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4189 int highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4190 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4191 dumpglyphs (f,
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4192 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
4193 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
4194 &glyph, 1, highlight, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4195 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4196
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4197 static void
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4198 x_display_bar_cursor (f, on, x, y)
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4199 struct frame *f;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4200 int on;
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4201 int x, y;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4202 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4203 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
4204
2235
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4205 /* 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
4206 frames; in the latter case, the frame may be in the midst of
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4207 changing its size, and x and y may be off the frame. */
2235
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4208 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
4209 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4210
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4211 if (! on && f->phys_cursor_x < 0)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4212 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4213
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4214 /* 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
4215 if (f->phys_cursor_x >= 0
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4216 && (!on
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4217 || f->phys_cursor_x != x
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4218 || f->phys_cursor_y != y
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4219 || f->output_data.x->current_cursor != bar_cursor))
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4220 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4221 /* 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
4222 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
4223 f->phys_cursor_glyph,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4224 current_glyphs->highlight[f->phys_cursor_y]);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4225 f->phys_cursor_x = -1;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4226 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4227
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4228 /* 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
4229 if (on
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4230 && (f->phys_cursor_x < 0
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4231 || (f->output_data.x->current_cursor != bar_cursor)))
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4232 {
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4233 f->phys_cursor_glyph
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4234 = ((current_glyphs->enable[y]
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4235 && x < current_glyphs->used[y])
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4236 ? current_glyphs->glyphs[y][x]
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4237 : SPACEGLYPH);
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4238 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4239 f->output_data.x->cursor_gc,
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4240 CHAR_TO_PIXEL_COL (f, x),
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4241 CHAR_TO_PIXEL_ROW (f, y),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4242 max (f->output_data.x->cursor_width, 1),
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4243 f->output_data.x->line_height);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4244
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4245 f->phys_cursor_x = x;
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4246 f->phys_cursor_y = y;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4247
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4248 f->output_data.x->current_cursor = bar_cursor;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4249 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4250
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4251 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
4252 XFlush (FRAME_X_DISPLAY (f));
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4253 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4254
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4255
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4256 /* Turn the displayed cursor of frame F on or off according to ON.
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4257 If ON is nonzero, where to put the cursor is specified by X and Y. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4258
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4259 static void
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4260 x_display_box_cursor (f, on, x, y)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4261 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4262 int on;
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4263 int x, y;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4264 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4265 struct frame_glyphs *current_glyphs = FRAME_CURRENT_GLYPHS (f);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4266
2235
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4267 /* 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
4268 frames; in the latter case, the frame may be in the midst of
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4269 changing its size, and x and y may be off the frame. */
2235
80e0d36bbb77 * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't
Jim Blandy <jimb@redhat.com>
parents: 2195
diff changeset
4270 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
4271 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4272
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4273 /* 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
4274 if (!on && f->phys_cursor_x < 0)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4275 return;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4276
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4277 /* 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
4278 or it is in the wrong place,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4279 or we want a hollow box and it's not so, (pout!)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4280 erase it. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4281 if (f->phys_cursor_x >= 0
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4282 && (!on
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4283 || f->phys_cursor_x != x
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4284 || f->phys_cursor_y != y
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4285 || (f->output_data.x->current_cursor != hollow_box_cursor
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
4286 && (f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame))))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4287 {
7508
a15923bc982d (x_display_box_cursor): Preserve mouse highlight if the old cursor was in it.
Richard M. Stallman <rms@gnu.org>
parents: 7501
diff changeset
4288 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
4289 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
4290
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
4291 /* 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
4292 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
4293 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
4294 &&
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4295 (f->phys_cursor_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
4296 || (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
4297 && 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
4298 &&
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4299 (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
4300 || (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
4301 && 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
4302 /* 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
4303 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
4304 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
4305 && 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
4306 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
4307
6791
7036e4fd549f (dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents: 6767
diff changeset
4308 /* 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
4309 we must explicitly clear the line's whole height. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4310 if (FONT_HEIGHT (f->output_data.x->font) != f->output_data.x->line_height)
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4311 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
4312 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
4313 CHAR_TO_PIXEL_ROW (f, f->phys_cursor_y),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4314 FONT_WIDTH (f->output_data.x->font),
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4315 f->output_data.x->line_height, False);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4316 /* Erase the cursor by redrawing the character underneath it. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4317 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
4318 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
4319 (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
4320 ? 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
4321 : current_glyphs->highlight[f->phys_cursor_y]));
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4322 f->phys_cursor_x = -1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4323 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4324
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4325 /* If we want to show a cursor,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4326 or we want a box cursor and it's not so,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4327 write it in the right place. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4328 if (on
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4329 && (f->phys_cursor_x < 0
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4330 || (f->output_data.x->current_cursor != filled_box_cursor
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
4331 && f == FRAME_X_DISPLAY_INFO (f)->x_highlight_frame)))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4332 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4333 f->phys_cursor_glyph
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4334 = ((current_glyphs->enable[y]
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4335 && x < current_glyphs->used[y])
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4336 ? current_glyphs->glyphs[y][x]
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4337 : SPACEGLYPH);
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
4338 if (f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4339 {
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4340 x_draw_box (f, x, y);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4341 f->output_data.x->current_cursor = hollow_box_cursor;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4342 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4343 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4344 {
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4345 x_draw_single_glyph (f, y, x,
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4346 f->phys_cursor_glyph, 2);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4347 f->output_data.x->current_cursor = filled_box_cursor;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4348 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4349
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4350 f->phys_cursor_x = x;
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4351 f->phys_cursor_y = y;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4352 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4353
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4354 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
4355 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4356 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4357
12431
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4358 /* Display the cursor on frame F, or clear it, according to ON.
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4359 Use the position specified by curs_x and curs_y
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4360 if we are doing an update of frame F now.
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4361 Otherwise use the position in the FRAME_CURSOR_X and FRAME_CURSOR_Y fields
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4362 of F. */
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4363
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4364 x_display_cursor (f, on)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4365 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4366 int on;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4367 {
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4368 BLOCK_INPUT;
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4369
12431
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4370 /* If we're not updating, then don't change the physical cursor
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4371 position. Just change (if appropriate) the style of display. */
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4372 if (f != updating_frame)
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4373 {
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4374 curs_x = FRAME_CURSOR_X (f);
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4375 curs_y = FRAME_CURSOR_Y (f);
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4376 }
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4377
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4378 if (FRAME_DESIRED_CURSOR (f) == filled_box_cursor)
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4379 x_display_box_cursor (f, on, curs_x, curs_y);
12431
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4380 else if (FRAME_DESIRED_CURSOR (f) == bar_cursor)
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4381 x_display_bar_cursor (f, on, curs_x, curs_y);
12431
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4382 else
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4383 /* Those are the only two we have implemented! */
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4384 abort ();
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4385
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4386 UNBLOCK_INPUT;
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4387 }
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4388
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4389 /* Display the cursor on frame F, or clear it, according to ON.
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4390 Don't change the cursor's position. */
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4391
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4392 x_update_cursor (f, on)
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4393 struct frame *f;
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4394 int on;
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4395 {
14692
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
4396 /* If we don't have any previous cursor position to use,
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
4397 leave the cursor off. */
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
4398 if (f->phys_cursor_x < 0)
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
4399 return;
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
4400
12431
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4401 BLOCK_INPUT;
80a5aedfb4c7 (XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents: 12192
diff changeset
4402
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4403 if (FRAME_DESIRED_CURSOR (f) == filled_box_cursor)
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4404 x_display_box_cursor (f, on, f->phys_cursor_x, f->phys_cursor_y);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4405 else if (FRAME_DESIRED_CURSOR (f) == bar_cursor)
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
4406 x_display_bar_cursor (f, on, f->phys_cursor_x, f->phys_cursor_y);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4407 else
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4408 /* Those are the only two we have implemented! */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4409 abort ();
5872
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4410
6389c826f847 (x_display_cursor, process_expose_from_menu): Block input.
Karl Heuer <kwzh@gnu.org>
parents: 5825
diff changeset
4411 UNBLOCK_INPUT;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4412 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4413
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4414 /* Icons. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4415
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4416 /* Refresh bitmap kitchen sink icon for frame F
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4417 when we get an expose event for it. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4418
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4419 refreshicon (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4420 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4421 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4422 /* Normally, the window manager handles this function. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4423 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4424
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
4425 /* Make the x-window of frame F use the gnu icon bitmap. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4426
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4427 int
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4428 x_bitmap_icon (f, file)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4429 struct frame *f;
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4430 Lisp_Object file;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4431 {
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4432 int mask, bitmap_id;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4433 Window icon_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4434
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4435 if (FRAME_X_WINDOW (f) == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4436 return 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4437
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4438 /* Free up our existing icon bitmap if any. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4439 if (f->output_data.x->icon_bitmap > 0)
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4440 x_destroy_bitmap (f, f->output_data.x->icon_bitmap);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4441 f->output_data.x->icon_bitmap = 0;
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4442
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4443 if (STRINGP (file))
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4444 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
4445 else
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4446 {
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4447 /* 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
4448 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
4449 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
4450 = 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
4451 gnu_width, gnu_height);
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4452
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4453 /* The first time we create the GNU bitmap,
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4454 this increments the refcount one extra time.
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
4455 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
4456 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
4457 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
4458
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4459 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
4460 }
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4461
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
4462 x_wm_set_icon_pixmap (f, bitmap_id);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4463 f->output_data.x->icon_bitmap = bitmap_id;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4464
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4465 return 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4466 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4467
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4468
12074
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4469 /* 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
4470 Use ICON_NAME as the text. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4471
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4472 int
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4473 x_text_icon (f, icon_name)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4474 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4475 char *icon_name;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4476 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4477 if (FRAME_X_WINDOW (f) == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4478 return 1;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4479
12074
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4480 #ifdef HAVE_X11R4
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4481 {
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4482 XTextProperty text;
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4483 text.value = (unsigned char *) icon_name;
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4484 text.encoding = XA_STRING;
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4485 text.format = 8;
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4486 text.nitems = strlen (icon_name);
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4487 #ifdef USE_X_TOOLKIT
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4488 XSetWMIconName (FRAME_X_DISPLAY (f), XtWindow (f->output_data.x->widget),
12074
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4489 &text);
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4490 #else /* not USE_X_TOOLKIT */
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4491 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
4492 #endif /* not USE_X_TOOLKIT */
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4493 }
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4494 #else /* not HAVE_X11R4 */
111aadc2521a (x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents: 12000
diff changeset
4495 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
4496 #endif /* not HAVE_X11R4 */
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4497
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4498 if (f->output_data.x->icon_bitmap > 0)
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4499 x_destroy_bitmap (f, f->output_data.x->icon_bitmap);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4500 f->output_data.x->icon_bitmap = 0;
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
4501 x_wm_set_icon_pixmap (f, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4502
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4503 return 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4504 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4505
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4506 /* Handling X errors. */
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4507
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4508 /* 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
4509
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4510 static SIGTYPE
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4511 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
4512 Display *display;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4513 char *error_message;
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4514 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4515 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
4516 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
4517
11904
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4518 /* 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
4519 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
4520 called with input blocked. */
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4521 TOTALLY_UNBLOCK_INPUT;
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4522
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4523 if (_Xdebug)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4524 abort ();
1787
5e245540d06f Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1739
diff changeset
4525
14489
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
4526 /* Indicate that this display is dead. */
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
4527
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
4528 dpyinfo->display = 0;
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
4529
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4530 /* 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
4531 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
4532 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
4533 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4534 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
4535 minibuf_frame
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4536 = 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
4537 if (FRAME_X_P (XFRAME (frame))
bf33c9179a6b (x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents: 10755
diff changeset
4538 && FRAME_X_P (XFRAME (minibuf_frame))
bf33c9179a6b (x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents: 10755
diff changeset
4539 && ! EQ (frame, minibuf_frame)
bf33c9179a6b (x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents: 10755
diff changeset
4540 && 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
4541 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
4542 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4543
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4544 /* 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
4545 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
4546 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
4547 FOR_EACH_FRAME (tail, frame)
10921
bf33c9179a6b (x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents: 10755
diff changeset
4548 if (FRAME_X_P (XFRAME (frame))
bf33c9179a6b (x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents: 10755
diff changeset
4549 && 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
4550 {
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4551 /* 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
4552 trying to find a replacement. */
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4553 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
4554 Fdelete_frame (frame, Qt);
0d37c1e81c0d (x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents: 11901
diff changeset
4555 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4556
13727
9eb09adbcb38 (x_connection_closed): Don't delete dpyinfo if it's null.
Karl Heuer <kwzh@gnu.org>
parents: 13633
diff changeset
4557 if (dpyinfo)
9eb09adbcb38 (x_connection_closed): Don't delete dpyinfo if it's null.
Karl Heuer <kwzh@gnu.org>
parents: 13633
diff changeset
4558 x_delete_display (dpyinfo);
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4559
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4560 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
4561 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4562 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
4563 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
4564 exit (70);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4565 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4566
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4567 /* 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
4568 #ifdef SIGIO
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4569 sigunblock (sigmask (SIGIO));
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4570 #endif
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4571 sigunblock (sigmask (SIGALRM));
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4572 TOTALLY_UNBLOCK_INPUT;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4573
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4574 error ("%s", error_message);
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4575 }
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 555
diff changeset
4576
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4577 /* 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
4578 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
4579 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
4580
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4581 static int
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4582 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
4583 Display *display;
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4584 XErrorEvent *error;
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4585 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4586 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
4587
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4588 /* 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
4589 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
4590
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4591 XGetErrorText (display, error->error_code, buf, sizeof (buf));
14557
64e5e68aef13 (x_error_quitter): Add newline to error message.
Richard M. Stallman <rms@gnu.org>
parents: 14522
diff changeset
4592 sprintf (buf1, "X protocol error: %s on protocol request %d\n",
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4593 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
4594 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
4595 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4596
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4597 /* 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
4598 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
4599 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
4600
1875
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4601 static int
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4602 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
4603 Display *display;
f569bc4e9b8f * xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents: 1841
diff changeset
4604 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4605 char buf[256];
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4606
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4607 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
4608 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
4609 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4610
13205
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4611 /* Handle SIGPIPE, which can happen when the connection to a server
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4612 simply goes away. SIGPIPE is handled by x_connection_signal.
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4613 It works by sending a no-op command to each X server connection.
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4614 When we try a connection that has closed, we get SIGPIPE again.
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4615 But this time, it is handled by x_connection_signal_1.
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4616 That function knows which connection we were testing,
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4617 so it closes that one.
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4618
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4619 x_connection_closed never returns,
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4620 so if more than one connection was lost at once,
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4621 we only find one. But XTread_socket keeps trying them all,
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4622 so it will notice the other closed one sooner or later. */
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4623
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4624
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4625 static struct x_display_info *x_connection_signal_dpyinfo;
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4626
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4627 static SIGTYPE x_connection_signal ();
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4628
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4629 static SIGTYPE
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4630 x_connection_signal_1 (signalnum) /* If we don't have an argument, */
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4631 int signalnum; /* some compilers complain in signal calls. */
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4632 {
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4633 signal (SIGPIPE, x_connection_signal);
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4634 x_connection_closed (x_connection_signal_dpyinfo,
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4635 "connection was lost");
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4636 }
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4637
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4638 static SIGTYPE
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4639 x_connection_signal (signalnum) /* If we don't have an argument, */
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4640 int signalnum; /* some compilers complain in signal calls. */
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4641 {
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4642 x_connection_signal_dpyinfo = x_display_list;
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4643
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4644 sigunblock (SIGPIPE);
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4645
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4646 while (x_connection_signal_dpyinfo)
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4647 {
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4648 signal (SIGPIPE, x_connection_signal_1);
13782
52f469edf216 (x_connection_signal): Set an alarm around XNoOp call.
Karl Heuer <kwzh@gnu.org>
parents: 13727
diff changeset
4649
14694
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
4650 x_connection_close_if_hung (x_connection_signal_dpyinfo);
14305
3cc44eaf9ebf (x_connection_signal): Explicitly check the thread interlock
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
4651
13205
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4652 XNoOp (x_connection_signal_dpyinfo->display);
13782
52f469edf216 (x_connection_signal): Set an alarm around XNoOp call.
Karl Heuer <kwzh@gnu.org>
parents: 13727
diff changeset
4653
13205
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4654 XSync (x_connection_signal_dpyinfo->display, False);
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4655
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4656 /* Each time we get here, cycle through the displays now open. */
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4657 x_connection_signal_dpyinfo = x_connection_signal_dpyinfo->next;
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4658 }
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4659
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4660 /* We should have found some closed connection. */
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4661 abort ();
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4662 }
8eac10febc8e (x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12966
diff changeset
4663
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4664 /* 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
4665 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
4666 #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
4667
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4668 /* 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
4669 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
4670 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
4671
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4672 static int
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4673 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
4674 Display *display;
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4675 XErrorEvent *error;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4676 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4677 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
4678 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
4679 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4680
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4681
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4682 /* 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
4683 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
4684 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
4685
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4686 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
4687 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
4688
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4689 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
4690 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
4691
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4692 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
4693
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
4694 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
4695
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4696 void
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4697 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
4698 Display *dpy;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4699 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4700 /* 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
4701 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
4702
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4703 /* 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
4704 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
4705 = (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
4706 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
4707
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4708 /* 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
4709 XSetErrorHandler (x_error_catcher);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4710 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4711
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4712 /* 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
4713 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
4714 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
4715
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4716 void
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4717 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
4718 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
4719 char *format;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4720 {
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4721 /* 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
4722 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
4723
3558
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4724 if (x_caught_error_message[0])
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4725 {
3558
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4726 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
4727
f7f187debe2d (x_caught_error_message): Change type to char* from char*[].
Richard M. Stallman <rms@gnu.org>
parents: 3511
diff changeset
4728 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
4729 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
4730 error (buf);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4731 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4732 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4733
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4734 /* 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
4735
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4736 int
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4737 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
4738 Display *dpy;
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4739 {
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4740 /* 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
4741 XSync (dpy, False);
6022
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4742
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4743 return x_caught_error_message[0] != 0;
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4744 }
713d4d840a11 (x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6010
diff changeset
4745
5986
fdb3959bbaf7 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 5953
diff changeset
4746 /* Stop catching X protocol errors and let them make Emacs die. */
fdb3959bbaf7 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 5953
diff changeset
4747
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4748 void
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4749 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
4750 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
4751 {
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2353
diff changeset
4752 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
4753 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
4754 XSetErrorHandler (x_error_quitter);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4755 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4756
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4757 #if 0
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4758 static unsigned int x_wire_count;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4759 x_trace_wire ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4760 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4761 fprintf (stderr, "Lib call: %d\n", ++x_wire_count);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4762 }
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
4763 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4764
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4765
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
4766 /* 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
4767
8291
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4768 /* 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
4769 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
4770 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
4771 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
4772
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4773 Lisp_Object
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4774 x_new_font (f, fontname)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4775 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4776 register char *fontname;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4777 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4778 int already_loaded;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4779 int n_matching_fonts;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4780 XFontStruct *font_info;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4781 char **font_names;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4782
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4783 /* Get a list of all the fonts that match this name. Once we
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4784 have a list of matching fonts, we compare them against the fonts
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4785 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
4786 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
4787 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
4788 /* 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
4789 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
4790 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
4791 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
4792
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4793 /* 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
4794 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
4795 fail to find a font, but XLoadQueryFont may still find it. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4796
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
4797 /* 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
4798 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
4799 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
4800 {
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4801 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
4802
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4803 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
4804 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
4805 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
4806 || !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
4807 {
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4808 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
4809 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
4810 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
4811 }
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4812 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4813 found_font:
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4814
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4815 /* 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
4816 if (already_loaded >= 0)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4817 f->output_data.x->font = FRAME_X_DISPLAY_INFO (f)->font_table[already_loaded].font;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4818 /* Otherwise, load the font and add it to the table. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4819 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4820 {
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4821 int i;
8291
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4822 char *full_name;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4823 XFontStruct *font;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4824 int n_fonts;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4825
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4826 /* 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
4827 #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
4828 /* 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
4829 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
4830 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
4831 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
4832 #else
039cbddadc51 * xfaces.c (merge_faces): You can't tell if a font is a
Jim Blandy <jimb@redhat.com>
parents: 3045
diff changeset
4833 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
4834 #endif
3016
ce9ea90b5848 * xterm.c (x_new_font): Reject fonts with varying spacing. We
Jim Blandy <jimb@redhat.com>
parents: 2982
diff changeset
4835
3511
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4836 /* 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
4837 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
4838 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
4839
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4840 font = (XFontStruct *) XLoadQueryFont (FRAME_X_DISPLAY (f), fontname);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4841 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
4842 {
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4843 /* 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
4844 if (n_matching_fonts)
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4845 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
4846 return Qnil;
21fae09a3ad2 (x_new_font): Don't give up right away if XListFontsWithInfo
Richard M. Stallman <rms@gnu.org>
parents: 3465
diff changeset
4847 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4848
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4849 /* 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
4850 if (FRAME_X_DISPLAY_INFO (f)->font_table_size == 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4851 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4852 FRAME_X_DISPLAY_INFO (f)->font_table_size = 16;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4853 FRAME_X_DISPLAY_INFO (f)->font_table
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4854 = (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
4855 * sizeof (struct font_info));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4856 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4857 /* 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
4858 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
4859 >= FRAME_X_DISPLAY_INFO (f)->font_table_size)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4860 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4861 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
4862 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
4863 = (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
4864 (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
4865 * sizeof (struct font_info)));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4866 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4867
8291
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4868 /* 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
4869 full_name = 0;
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4870 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
4871 {
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4872 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
4873 = 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
4874 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
4875 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
4876 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
4877 (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
4878 char *p = name;
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4879 int dashes = 0;
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4880
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4881 /* 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
4882 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
4883 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
4884 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
4885 stored in them. */
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4886 while (*p)
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4887 {
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4888 if (*p == '-')
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4889 dashes++;
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4890 p++;
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4891 }
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4892
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4893 if (dashes >= 13)
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4894 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
4895
c84536ef5fa9 (x_new_font): Don't keep looping after the FONT property.
Richard M. Stallman <rms@gnu.org>
parents: 9446
diff changeset
4896 break;
8964
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4897 }
5882c2fedd98 (note_mouse_highlight): Pass new arg to overlays_at.
Richard M. Stallman <rms@gnu.org>
parents: 8941
diff changeset
4898
8291
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4899 XFree (atom);
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4900 }
9c6ddd14996b (struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents: 8279
diff changeset
4901
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4902 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
4903 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
4904 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
4905 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
4906 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
4907 else
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4908 FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].full_name = FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].name;
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4909 f->output_data.x->font = FRAME_X_DISPLAY_INFO (f)->font_table[n_fonts].font = font;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
4910 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
4911
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
4912 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
4913 fontname = full_name;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4914 }
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4915
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 /* 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
4917 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
4918 {
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4919 int wid = FONT_WIDTH (f->output_data.x->font);
9167
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
4920 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
4921 }
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
4922 else
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
4923 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
4924
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4925 /* 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
4926 if (FRAME_X_WINDOW (f) != 0)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4927 {
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4928 XSetFont (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc,
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4929 f->output_data.x->font->fid);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4930 XSetFont (FRAME_X_DISPLAY (f), f->output_data.x->reverse_gc,
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4931 f->output_data.x->font->fid);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4932 XSetFont (FRAME_X_DISPLAY (f), f->output_data.x->cursor_gc,
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4933 f->output_data.x->font->fid);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4934
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
4935 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
4936 x_set_window_size (f, 0, f->width, f->height);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4937 }
6767
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
4938 else
8fbcee1c2059 (stufflines, scraplines, dumprectangle, x_do_pending_expose)
Richard M. Stallman <rms@gnu.org>
parents: 6757
diff changeset
4939 /* 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
4940 there are no faces yet, so this font's height is the line height. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4941 f->output_data.x->line_height = FONT_HEIGHT (f->output_data.x->font);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4942
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4943 {
6521
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
4944 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
4945
a975c5944916 (x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6413
diff changeset
4946 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
4947
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4948 /* 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
4949 we actually retain comes from XLoadQueryFont. */
4493
d0143beb12f0 (struct font_info): New structure.
Richard M. Stallman <rms@gnu.org>
parents: 4476
diff changeset
4950 XFreeFontNames (font_names);
3076
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4951
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4952 return lispy_name;
e3b3c67cf203 Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents: 3066
diff changeset
4953 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4954 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4955
7264
a701bffa0f9d (x_calc_absolute_position): Use size_hint_flags.
Richard M. Stallman <rms@gnu.org>
parents: 7262
diff changeset
4956 x_calc_absolute_position (f)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4957 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4958 {
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4959 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
4960 int win_x = 0, win_y = 0;
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4961 int flags = f->output_data.x->size_hint_flags;
11896
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4962 int this_window;
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4963
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4964 #ifdef USE_X_TOOLKIT
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4965 this_window = XtWindow (f->output_data.x->widget);
11896
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4966 #else
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4967 this_window = FRAME_X_WINDOW (f);
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4968 #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
4969
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4970 /* 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
4971 the inner window, with respect to the outer window. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4972 if (f->output_data.x->parent_desc != FRAME_X_DISPLAY_INFO (f)->root_window)
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4973 {
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4974 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
4975 XTranslateCoordinates (FRAME_X_DISPLAY (f),
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
4976
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4977 /* From-window, to-window. */
11896
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
4978 this_window,
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4979 f->output_data.x->parent_desc,
4630
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4980
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4981 /* 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
4982 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
4983
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4984 /* 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
4985 &child);
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4986 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
4987 }
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4988
70247ce8b381 (x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents: 4493
diff changeset
4989 /* 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
4990 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
4991 if (flags & XNegative)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4992 f->output_data.x->left_pos = (FRAME_X_DISPLAY_INFO (f)->width
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4993 - 2 * f->output_data.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
4994 - PIXEL_WIDTH (f)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4995 + f->output_data.x->left_pos);
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
4996
7262
68fc80bf10df (x_wm_set_size_hint): Don't try to handle negative positions.
Richard M. Stallman <rms@gnu.org>
parents: 7210
diff changeset
4997 if (flags & YNegative)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4998 f->output_data.x->top_pos = (FRAME_X_DISPLAY_INFO (f)->height
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
4999 - 2 * f->output_data.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
5000 - PIXEL_HEIGHT (f)
11896
507a45c7e911 (x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents: 11807
diff changeset
5001 - (FRAME_EXTERNAL_MENU_BAR (f)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5002 ? f->output_data.x->menubar_height : 0)
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5003 + f->output_data.x->top_pos);
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
5004 /* 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
5005 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
5006 so the flags should correspond. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5007 f->output_data.x->size_hint_flags &= ~ (XNegative | YNegative);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5008 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5009
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
5010 /* 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
5011 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
5012 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
5013 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
5014 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
5015
6934
e0ab4f59004e (dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents: 6883
diff changeset
5016 x_set_offset (f, xoff, yoff, change_gravity)
771
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 register int xoff, yoff;
6934
e0ab4f59004e (dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents: 6883
diff changeset
5019 int change_gravity;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5020 {
11901
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
5021 int modified_top, modified_left;
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
5022
11988
a1ce6f699967 (x_set_offset): Distinguish CHANGE_GRAVITY < 0 case.
Karl Heuer <kwzh@gnu.org>
parents: 11953
diff changeset
5023 if (change_gravity > 0)
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
5024 {
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5025 f->output_data.x->top_pos = yoff;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5026 f->output_data.x->left_pos = xoff;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5027 f->output_data.x->size_hint_flags &= ~ (XNegative | YNegative);
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
5028 if (xoff < 0)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5029 f->output_data.x->size_hint_flags |= XNegative;
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
5030 if (yoff < 0)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5031 f->output_data.x->size_hint_flags |= YNegative;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5032 f->output_data.x->win_gravity = NorthWestGravity;
7409
fe56a02838ba (x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents: 7346
diff changeset
5033 }
7264
a701bffa0f9d (x_calc_absolute_position): Use size_hint_flags.
Richard M. Stallman <rms@gnu.org>
parents: 7262
diff changeset
5034 x_calc_absolute_position (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5035
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5036 BLOCK_INPUT;
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
5037 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
5038
11901
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
5039 /* 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
5040 when the frame is already visible, but experiment says we do. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5041 modified_left = f->output_data.x->left_pos;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5042 modified_top = f->output_data.x->top_pos;
11988
a1ce6f699967 (x_set_offset): Distinguish CHANGE_GRAVITY < 0 case.
Karl Heuer <kwzh@gnu.org>
parents: 11953
diff changeset
5043 if (change_gravity != 0)
11901
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
5044 {
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5045 modified_left += f->output_data.x->border_width;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5046 modified_top += f->output_data.x->border_width;
11901
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
5047 }
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
5048
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5049 #ifdef USE_X_TOOLKIT
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5050 XMoveWindow (FRAME_X_DISPLAY (f), XtWindow (f->output_data.x->widget),
11901
8ecc60a02138 (x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents: 11896
diff changeset
5051 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
5052 #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
5053 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
5054 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
5055 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5056 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5057 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5058
5825
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5059 /* 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
5060 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
5061 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
5062 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
5063
b1f35db748d8 (x_make_frame_invisible): Add USE_X_TOOLKIT conditional.
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5753
diff changeset
5064 x_set_window_size (f, change_gravity, cols, rows)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5065 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
5066 int change_gravity;
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5067 int cols, rows;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5068 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5069 int pixelwidth, pixelheight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5070 int mask;
14692
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5071 Lisp_Object window;
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5072 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5073
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5074 BLOCK_INPUT;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5075
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
5076 #ifdef USE_X_TOOLKIT
7415
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
5077 {
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
5078 /* 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
5079 call to XtSetValues within EmacsFrameSetCharSize.
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
5080 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
5081 figure out a correct fix. Can anyone else tell me? -- rms. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5082 int xpos = f->output_data.x->widget->core.x;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5083 int ypos = f->output_data.x->widget->core.y;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5084 EmacsFrameSetCharSize (f->output_data.x->edit_widget, cols, rows);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5085 f->output_data.x->widget->core.x = xpos;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5086 f->output_data.x->widget->core.y = ypos;
7415
fbea5637a4b4 (x_set_window_size) [USE_X_TOOLKIT]:
Richard M. Stallman <rms@gnu.org>
parents: 7409
diff changeset
5087 }
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
5088
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
5089 #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
5090
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5091 check_frame_size (f, &rows, &cols);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5092 f->output_data.x->vertical_scroll_bar_extra
9167
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
5093 = (!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
5094 ? 0
8ad448b29c1c (x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents: 9101
diff changeset
5095 : 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
5096 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5097 : (FRAME_SCROLL_BAR_COLS (f) * FONT_WIDTH (f->output_data.x->font)));
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5098 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
5099 pixelheight = CHAR_TO_PIXEL_HEIGHT (f, rows);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5100
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5101 f->output_data.x->win_gravity = NorthWestGravity;
11915
e2ab839155e1 (XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents: 11904
diff changeset
5102 x_wm_set_size_hint (f, (long) 0, 0);
8781
98741404d3e0 Delete X11 conditionals.
Richard M. Stallman <rms@gnu.org>
parents: 8724
diff changeset
5103
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5104 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
5105 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
5106 pixelwidth, pixelheight);
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5107
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5108 /* 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
5109 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
5110 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
5111 ConfigureNotify event gets here.
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5112
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5113 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
5114 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
5115 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
5116 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
5117 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
5118 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
5119 PIXEL_WIDTH (f) = pixelwidth;
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5120 PIXEL_HEIGHT (f) = pixelheight;
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5121
14692
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5122 /* We've set {FRAME,PIXEL}_{WIDTH,HEIGHT} to the values we hope to
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5123 receive in the ConfigureNotify event; if we get what we asked
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5124 for, then the event won't cause the screen to become garbaged, so
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5125 we have to make sure to do it here. */
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5126 SET_FRAME_GARBAGED (f);
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5127
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5128 XFlush (FRAME_X_DISPLAY (f));
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5129
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5130 #endif /* not USE_X_TOOLKIT */
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5131
7651
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
5132 /* 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
5133 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
5134 || 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
5135 {
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
5136 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
5137 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
5138 }
1569a13efdcd (x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents: 7602
diff changeset
5139
14692
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5140 /* Clear out any recollection of where the mouse highlighting was,
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5141 since it might be in a place that's outside the new frame size.
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5142 Actually checking whether it is outside is a pain in the neck,
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5143 so don't try--just let the highlighting be done afresh with new size. */
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5144 window = dpyinfo->mouse_face_window;
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5145 if (! NILP (window) && XFRAME (window) == f)
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5146 {
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5147 dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1;
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5148 dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1;
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5149 dpyinfo->mouse_face_window = Qnil;
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5150 }
e93656946a8c (x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents: 14557
diff changeset
5151
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5152 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5153 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5154
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5155 /* Mouse warping. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5156
7026
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5157 void
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5158 x_set_mouse_position (f, x, y)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5159 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5160 int x, y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5161 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5162 int pix_x, pix_y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5163
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5164 pix_x = CHAR_TO_PIXEL_COL (f, x) + FONT_WIDTH (f->output_data.x->font) / 2;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5165 pix_y = CHAR_TO_PIXEL_ROW (f, y) + f->output_data.x->line_height / 2;
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5166
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5167 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
5168 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
5169
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5170 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
5171 if (pix_y > PIXEL_HEIGHT (f)) pix_y = PIXEL_HEIGHT (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5172
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5173 BLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5174
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5175 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
5176 0, 0, 0, 0, pix_x, pix_y);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5177 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5178 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5179
7026
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5180 /* 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
5181
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5182 void
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5183 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
5184 struct frame *f;
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5185 int pix_x, pix_y;
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5186 {
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5187 BLOCK_INPUT;
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5188
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5189 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
5190 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
5191 UNBLOCK_INPUT;
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5192 }
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5193
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5194 /* focus shifting, raising and lowering. */
7026
55f9a506180d (x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7001
diff changeset
5195
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5196 x_focus_on_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5197 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5198 {
5156
fd78458b8c43 (XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents: 5018
diff changeset
5199 #if 0 /* This proves to be unpleasant. */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5200 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
5201 #endif
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5202 #if 0
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5203 /* 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
5204 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
5205 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
5206 XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5207 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
5208 #endif /* ! 0 */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5209 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5210
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5211 x_unfocus_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5212 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5213 {
369
7f92840f8be4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 313
diff changeset
5214 #if 0
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5215 /* 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
5216 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
5217 XSetInputFocus (FRAME_X_DISPLAY (f), PointerRoot,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5218 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
5219 #endif /* ! 0 */
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
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5222 /* Raise frame F. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5223
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5224 x_raise_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5225 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5226 {
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5227 if (f->async_visible)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5228 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5229 BLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5230 #ifdef USE_X_TOOLKIT
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5231 XRaiseWindow (FRAME_X_DISPLAY (f), XtWindow (f->output_data.x->widget));
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5232 #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
5233 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
5234 #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
5235 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5236 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5237 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5238 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5239
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5240 /* Lower frame F. */
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5241
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5242 x_lower_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5243 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5244 {
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5245 if (f->async_visible)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5246 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5247 BLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5248 #ifdef USE_X_TOOLKIT
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5249 XLowerWindow (FRAME_X_DISPLAY (f), XtWindow (f->output_data.x->widget));
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5250 #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
5251 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
5252 #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
5253 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5254 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5255 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5256 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5257
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5258 static void
14411
bac274f178b0 (XTframe_raise_lower): Rename arg `raise' to `raise_flag'.
Richard M. Stallman <rms@gnu.org>
parents: 14305
diff changeset
5259 XTframe_raise_lower (f, raise_flag)
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5260 FRAME_PTR f;
14411
bac274f178b0 (XTframe_raise_lower): Rename arg `raise' to `raise_flag'.
Richard M. Stallman <rms@gnu.org>
parents: 14305
diff changeset
5261 int raise_flag;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5262 {
14411
bac274f178b0 (XTframe_raise_lower): Rename arg `raise' to `raise_flag'.
Richard M. Stallman <rms@gnu.org>
parents: 14305
diff changeset
5263 if (raise_flag)
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5264 x_raise_frame (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5265 else
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5266 x_lower_frame (f);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5267 }
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5268
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5269 /* Change of visibility. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5270
12192
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5271 /* This tries to wait until the frame is really visible.
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5272 However, if the window manager asks the user where to position
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5273 the frame, this will return before the user finishes doing that.
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5274 The frame will not actually be visible at that time,
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5275 but it will become visible later when the window manager
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5276 finishes with it. */
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5277
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5278 x_make_frame_visible (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5279 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5280 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5281 int mask;
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5282 Lisp_Object type;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5283
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5284 BLOCK_INPUT;
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5285
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5286 type = x_icon_type (f);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5287 if (!NILP (type))
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5288 x_bitmap_icon (f, type);
9446
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5289
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5290 if (! FRAME_VISIBLE_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5291 {
12192
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5292 /* We test FRAME_GARBAGED_P here to make sure we don't
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5293 call x_set_offset a second time
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5294 if we get to x_make_frame_visible a second time
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5295 before the window gets really visible. */
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5296 if (! FRAME_ICONIFIED_P (f)
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5297 && ! f->output_data.x->asked_for_visible)
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5298 x_set_offset (f, f->output_data.x->left_pos, f->output_data.x->top_pos, 0);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5299
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5300 f->output_data.x->asked_for_visible = 1;
12192
1b571a7992b0 (x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents: 12189
diff changeset
5301
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5302 if (! EQ (Vx_no_window_manager, Qt))
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5303 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
5304 #ifdef USE_X_TOOLKIT
7167
2fa74c48e4e5 (x_make_frame_visible): Use XtMapWidget, not XtPopup.
Richard M. Stallman <rms@gnu.org>
parents: 7128
diff changeset
5305 /* This was XtPopup, but that did nothing for an iconified frame. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5306 XtMapWidget (f->output_data.x->widget);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5307 #else /* not USE_X_TOOLKIT */
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5308 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
5309 #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
5310 #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
5311 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
5312 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
5313 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
5314 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
5315 #endif
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5316 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5317
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5318 XFlush (FRAME_X_DISPLAY (f));
429
10b1795f3ae9 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 398
diff changeset
5319
7959
224440646fa7 (make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents: 7935
diff changeset
5320 /* 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
5321 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
5322 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
5323 {
224440646fa7 (make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents: 7935
diff changeset
5324 Lisp_Object frame;
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5325 int count = input_signal_count;
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5326
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5327 /* This must come after we set COUNT. */
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5328 UNBLOCK_INPUT;
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5329
9338
873508897cc2 (x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents: 9337
diff changeset
5330 XSETFRAME (frame, f);
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5331
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5332 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
5333 {
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5334 x_sync (f);
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5335 /* Once we have handled input events,
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5336 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
5337 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
5338 Some window managers make their own decisions
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5339 about visibility. */
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5340 if (input_signal_count != count)
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5341 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
5342 /* 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
5343 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
5344 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
5345 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
5346 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
5347 if (input_polling_used ())
8652
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
5348 {
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
5349 /* 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
5350 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
5351 alarm (0);
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
5352 input_poll_signal ();
c2c1a477ddd5 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 8634
diff changeset
5353 }
9337
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5354 /* Once we have handled input events,
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5355 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
5356 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
5357 Some window managers make their own decisions
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5358 about visibility. */
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5359 if (input_signal_count != count)
7b933936a676 (input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 9232
diff changeset
5360 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
5361 }
7959
224440646fa7 (make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents: 7935
diff changeset
5362 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
5363 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5364 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5365
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5366 /* Change from mapped state to withdrawn state. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5367
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5368 /* Make the frame visible (mapped and not iconified). */
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5369
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5370 x_make_frame_invisible (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5371 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5372 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5373 int mask;
7602
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5374 Window window;
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5375
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5376 #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
5377 /* Use the frame's outermost window, not the one we normally draw on. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5378 window = XtWindow (f->output_data.x->widget);
7602
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5379 #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
5380 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
5381 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5382
3284
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5383 /* 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
5384 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
5385 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
5386
6983
b18e5c09d7c3 (XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents: 6941
diff changeset
5387 #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
5388 if (! f->async_visible && ! f->async_iconified)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5389 return;
6983
b18e5c09d7c3 (XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents: 6941
diff changeset
5390 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5391
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5392 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
5393
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5394 /* 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
5395 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
5396 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
5397 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
5398 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
5399 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
5400
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5401 #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
5402
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5403 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
5404 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
5405 {
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5406 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
5407 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
5408 }
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5409 #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
5410
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5411 /* Tell the window manager what we're going to do. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5412 if (! EQ (Vx_no_window_manager, Qt))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5413 {
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5414 XEvent unmap;
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5415
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5416 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
5417 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
5418 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
5419 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
5420 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
5421 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
5422 False,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5423 SubstructureRedirectMask|SubstructureNotifyMask,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5424 &unmap))
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5425 {
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5426 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
5427 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
5428 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5429 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5430
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5431 /* 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
5432 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
5433 #endif /* ! defined (HAVE_X11R4) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5434
6983
b18e5c09d7c3 (XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents: 6941
diff changeset
5435 /* 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
5436 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
5437 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
5438 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
5439 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
5440 f->visible = 0;
b18e5c09d7c3 (XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents: 6941
diff changeset
5441 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
5442 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
5443 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
5444
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5445 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
5446
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5447 UNBLOCK_INPUT;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5448 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5449
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5450 /* Change window state from mapped to iconified. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5451
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5452 x_iconify_frame (f)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5453 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5454 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5455 int mask;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5456 int result;
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5457 Lisp_Object type;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5458
3284
a47979ffad1e (XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents: 3282
diff changeset
5459 /* 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
5460 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
5461 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
5462
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5463 if (f->async_iconified)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5464 return;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5465
9446
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5466 BLOCK_INPUT;
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5467
13627
8873aa3451dd (XTmouse_position): Exit the loop if child == win.
Richard M. Stallman <rms@gnu.org>
parents: 13598
diff changeset
5468 FRAME_SAMPLE_VISIBILITY (f);
8873aa3451dd (XTmouse_position): Exit the loop if child == win.
Richard M. Stallman <rms@gnu.org>
parents: 13598
diff changeset
5469
9565
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5470 type = x_icon_type (f);
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5471 if (!NILP (type))
255d98c7cd67 (dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents: 9542
diff changeset
5472 x_bitmap_icon (f, type);
9446
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5473
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5474 #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
5475
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5476 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
5477 {
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5478 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
5479 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
5480 /* This was XtPopup, but that did nothing for an iconified frame. */
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5481 XtMapWidget (f->output_data.x->widget);
7602
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5482 UNBLOCK_INPUT;
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5483 return;
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5484 }
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5485
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5486 result = XIconifyWindow (FRAME_X_DISPLAY (f),
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5487 XtWindow (f->output_data.x->widget),
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5488 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
5489 UNBLOCK_INPUT;
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5490
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5491 if (!result)
7602
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5492 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
5493
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5494 f->async_iconified = 1;
5740
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5495
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5496 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
5497 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
5498 UNBLOCK_INPUT;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5499 #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
5500
7738
a810335742bb (x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents: 7706
diff changeset
5501 /* 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
5502 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
5503 if (! FRAME_VISIBLE_P (f) && !FRAME_ICONIFIED_P (f))
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5504 x_set_offset (f, f->output_data.x->left_pos, f->output_data.x->top_pos, 0);
7738
a810335742bb (x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents: 7706
diff changeset
5505
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5506 /* 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
5507 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
5508
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5509 /* 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
5510 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
5511 {
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5512 XEvent message;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
5513
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5514 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
5515 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
5516 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
5517 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
5518 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
5519
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5520 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
5521 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
5522 False,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5523 SubstructureRedirectMask | SubstructureNotifyMask,
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5524 &message))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5525 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5526 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
5527 error ("Can't notify window manager of iconification");
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5528 }
1020
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5529 }
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5530
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
5531 /* 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
5532 IconicState. */
7c2565dd644c * xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents: 976
diff changeset
5533 x_wm_set_window_state (f, IconicState);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5534
4304
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5535 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
5536 {
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5537 /* 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
5538 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
5539 }
b5014da888a8 (x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents: 4277
diff changeset
5540
1658
452ba03935d7 * xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents: 1530
diff changeset
5541 f->async_iconified = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5542
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5543 XFlush (FRAME_X_DISPLAY (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5544 UNBLOCK_INPUT;
5740
48da4ed089e9 (x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents: 5737
diff changeset
5545 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5546 }
12172
58ce63f11008 (x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12079
diff changeset
5547
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5548 /* 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
5549
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5550 x_destroy_window (f)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5551 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5552 {
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5553 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
5554
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5555 BLOCK_INPUT;
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5556
14489
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5557 /* If a display connection is dead, don't try sending more
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5558 commands to the X server. */
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5559 if (dpyinfo->display != 0)
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5560 {
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5561 if (f->output_data.x->icon_desc != 0)
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5562 XDestroyWindow (FRAME_X_DISPLAY (f), f->output_data.x->icon_desc);
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5563 XDestroyWindow (FRAME_X_DISPLAY (f), f->output_data.x->window_desc);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5564 #ifdef USE_X_TOOLKIT
14489
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5565 XtDestroyWidget (f->output_data.x->widget);
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5566 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
5567 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5568
14489
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5569 free_frame_faces (f);
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5570 XFlush (FRAME_X_DISPLAY (f));
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5571 }
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5572
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5573 xfree (f->output_data.x);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5574 f->output_data.x = 0;
11536
c4d3218acd7e (x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents: 11436
diff changeset
5575 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
5576 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
5577 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
5578 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
5579 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
5580 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
5581
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5582 dpyinfo->reference_count--;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5583
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5584 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
5585 {
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5586 dpyinfo->mouse_face_beg_row
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5587 = dpyinfo->mouse_face_beg_col = -1;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5588 dpyinfo->mouse_face_end_row
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5589 = dpyinfo->mouse_face_end_col = -1;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5590 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
5591 }
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5592
1810
bf618128d973 * xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents: 1803
diff changeset
5593 UNBLOCK_INPUT;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5594 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5595
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5596 /* Setting window manager hints. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5597
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5598 /* 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
5599 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
5600 that the window now has.
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5601 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
5602 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
5603
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5604 x_wm_set_size_hint (f, flags, user_position)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5605 struct frame *f;
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5606 long flags;
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5607 int user_position;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5608 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5609 XSizeHints size_hints;
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5610
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5611 #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
5612 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
5613 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
5614 Dimension widget_width, widget_height;
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5615 Window window = XtWindow (f->output_data.x->widget);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5616 #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
5617 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
5618 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5619
7187
ca0102511d80 (x_wm_set_size_hint): Don't set PMaxSize.
Richard M. Stallman <rms@gnu.org>
parents: 7169
diff changeset
5620 /* 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
5621 size_hints.flags = PResizeInc | PMinSize /* | PMaxSize */;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5622
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5623 flexlines = f->height;
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5624
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5625 size_hints.x = f->output_data.x->left_pos;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5626 size_hints.y = f->output_data.x->top_pos;
7123
4f2c825cc0f8 (x_wm_set_size_hint): Do set max_height, max_width, and PMaxSize flag.
Richard M. Stallman <rms@gnu.org>
parents: 7122
diff changeset
5627
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
5628 #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
5629 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
5630 XtSetArg (al[ac], XtNheight, &widget_height); ac++;
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5631 XtGetValues (f->output_data.x->widget, al, ac);
6631
eea1789dc6fd (x_wm_set_size_hint): Add USE_X_TOOLKIT conditional and call
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6626
diff changeset
5632 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
5633 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
5634 #else /* not USE_X_TOOLKIT */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5635 size_hints.height = PIXEL_HEIGHT (f);
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5636 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
5637 #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
5638
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5639 size_hints.width_inc = FONT_WIDTH (f->output_data.x->font);
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5640 size_hints.height_inc = f->output_data.x->line_height;
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5641 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
5642 = 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
5643 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
5644 = 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
5645
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5646 /* Calculate the base and minimum sizes.
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5647
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5648 (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
5649 Instead we copy the values that the widgets are using, below.) */
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5650 #ifndef USE_X_TOOLKIT
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5651 {
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
5652 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
5653 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
5654
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5655 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
5656 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
5657
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5658 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
5659
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5660 /* 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
5661 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
5662 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
5663 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
5664 zero-row, zero-column frame.
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
5665
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5666 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
5667 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
5668 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
5669
cd3d59155bf7 * xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents: 1077
diff changeset
5670 #ifdef HAVE_X11R4
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5671 size_hints.flags |= PBaseSize;
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5672 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
5673 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
5674 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
5675 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
5676 #else
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5677 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
5678 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
5679 #endif
976
cbdfc337ec8f * xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents: 786
diff changeset
5680 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5681
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5682 /* 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
5683 if (flags)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5684 {
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5685 size_hints.flags |= flags;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5686 goto no_read;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5687 }
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5688 #endif /* not USE_X_TOOLKIT */
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5689
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5690 {
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5691 XSizeHints hints; /* Sometimes I hate X Windows... */
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5692 long supplied_return;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5693 int value;
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5694
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5695 #ifdef HAVE_X11R4
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5696 value = XGetWMNormalHints (FRAME_X_DISPLAY (f), window, &hints,
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5697 &supplied_return);
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5698 #else
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5699 value = XGetNormalHints (FRAME_X_DISPLAY (f), window, &hints);
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5700 #endif
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5701
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5702 #ifdef USE_X_TOOLKIT
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5703 size_hints.base_height = hints.base_height;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5704 size_hints.base_width = hints.base_width;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5705 size_hints.min_height = hints.min_height;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5706 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
5707 #endif
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
5708
12189
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5709 if (flags)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5710 size_hints.flags |= flags;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5711 else
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5712 {
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5713 if (value == 0)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5714 hints.flags = 0;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5715 if (hints.flags & PSize)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5716 size_hints.flags |= PSize;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5717 if (hints.flags & PPosition)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5718 size_hints.flags |= PPosition;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5719 if (hints.flags & USPosition)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5720 size_hints.flags |= USPosition;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5721 if (hints.flags & USSize)
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5722 size_hints.flags |= USSize;
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5723 }
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5724 }
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5725
09033eb62d7e Include widget.h.
Karl Heuer <kwzh@gnu.org>
parents: 12172
diff changeset
5726 no_read:
6883
77ceede38423 (x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents: 6791
diff changeset
5727
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5728 #ifdef PWinGravity
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5729 size_hints.win_gravity = f->output_data.x->win_gravity;
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5730 size_hints.flags |= PWinGravity;
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5731
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5732 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
5733 {
7210
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5734 size_hints.flags &= ~ PPosition;
682ff6213c36 (x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents: 7187
diff changeset
5735 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
5736 }
4777
21ed9c9bb210 (w_wn_set_size_hint): Make recent window gravity addition
Brian Fox <bfox@gnu.org>
parents: 4696
diff changeset
5737 #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
5738
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
5739 #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
5740 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
5741 #else
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5742 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
5743 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5744 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5745
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5746 /* Used for IconicState or NormalState */
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5747 x_wm_set_window_state (f, state)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5748 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5749 int state;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5750 {
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5751 #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
5752 Arg al[1];
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5753
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5754 XtSetArg (al[0], XtNinitialState, state);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5755 XtSetValues (f->output_data.x->widget, al, 1);
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5756 #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
5757 Window window = FRAME_X_WINDOW (f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5758
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5759 f->output_data.x->wm_hints.flags |= StateHint;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5760 f->output_data.x->wm_hints.initial_state = state;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5761
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5762 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->output_data.x->wm_hints);
7602
136819b017fc (x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents: 7508
diff changeset
5763 #endif /* not USE_X_TOOLKIT */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5764 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5765
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
5766 x_wm_set_icon_pixmap (f, pixmap_id)
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5767 struct frame *f;
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
5768 int pixmap_id;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5769 {
7806
ef7a60d59543 (x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents: 7801
diff changeset
5770 #ifdef USE_X_TOOLKIT
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5771 Window window = XtWindow (f->output_data.x->widget);
7806
ef7a60d59543 (x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents: 7801
diff changeset
5772 #else
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5773 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
5774 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5775
9542
f8b7a65a94bc (x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents: 9537
diff changeset
5776 if (pixmap_id > 0)
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5777 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5778 Pixmap icon_pixmap = x_bitmap_pixmap (f, pixmap_id);
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5779 f->output_data.x->wm_hints.icon_pixmap = icon_pixmap;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5780 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
5781 else
12966
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5782 {
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5783 /* It seems there is no way to turn off use of an icon pixmap.
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5784 The following line does it, only if no icon has yet been created,
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5785 for some window managers. But with mwm it crashes.
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5786 Some people say it should clear the IconPixmapHint bit in this case,
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5787 but that doesn't work, and the X consortium said it isn't the
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5788 right thing at all. Since there is no way to win,
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5789 best to explicitly give up. */
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5790 #if 0
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5791 f->output_data.x->wm_hints.icon_pixmap = None;
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5792 #else
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5793 return;
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5794 #endif
ce60b1a64399 (x_wm_set_icon_pixmap): If trying to turn off icon pixmap, do nothing.
Richard M. Stallman <rms@gnu.org>
parents: 12771
diff changeset
5795 }
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5796
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5797 f->output_data.x->wm_hints.flags |= IconPixmapHint;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5798 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->output_data.x->wm_hints);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5799 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5800
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5801 x_wm_set_icon_position (f, icon_x, icon_y)
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5802 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5803 int icon_x, icon_y;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5804 {
7806
ef7a60d59543 (x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents: 7801
diff changeset
5805 #ifdef USE_X_TOOLKIT
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5806 Window window = XtWindow (f->output_data.x->widget);
7806
ef7a60d59543 (x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents: 7801
diff changeset
5807 #else
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
5808 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
5809 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5810
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5811 f->output_data.x->wm_hints.flags |= IconPositionHint;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5812 f->output_data.x->wm_hints.icon_x = icon_x;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5813 f->output_data.x->wm_hints.icon_y = icon_y;
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5814
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12657
diff changeset
5815 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->output_data.x->wm_hints);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5816 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5817
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5818
1720
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5819 /* Initialization. */
4f5e3ac5d822 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1658
diff changeset
5820
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5821 #ifdef USE_X_TOOLKIT
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5822 static XrmOptionDescRec emacs_options[] = {
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5823 {"-geometry", ".geometry", XrmoptionSepArg, NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5824 {"-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
5825
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5826 {"-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
5827 XrmoptionSepArg, NULL},
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5828 {"-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
5829
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5830 {"-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
5831 {"-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
5832 {"-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
5833 {"-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
5834 {"-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
5835 {"-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
5836 {"-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
5837 };
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5838 #endif /* USE_X_TOOLKIT */
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5839
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5840 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
5841
11015
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5842 #ifdef MULTI_KBOARD
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5843 /* 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
5844 the screen number from the server number. */
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5845 static int
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5846 same_x_server (name1, name2)
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5847 char *name1, *name2;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5848 {
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5849 int seen_colon = 0;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5850 for (; *name1 != '\0' && *name1 == *name2; name1++, name2++)
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5851 {
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5852 if (*name1 == ':')
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5853 seen_colon++;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5854 if (seen_colon && *name1 == '.')
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5855 return 1;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5856 }
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5857 return (seen_colon
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5858 && (*name1 == '.' || *name1 == '\0')
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5859 && (*name2 == '.' || *name2 == '\0'));
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5860 }
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5861 #endif
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5862
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5863 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
5864 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
5865 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
5866 char *xrm_option;
10e818a0248a (x_term_init): New args xrm_option and resource_string.
Richard M. Stallman <rms@gnu.org>
parents: 7738
diff changeset
5867 char *resource_name;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5868 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
5869 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5870 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
5871 int connection;
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5872 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
5873 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
5874 XrmDatabase xrdb;
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
5875
11997
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5876 BLOCK_INPUT;
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5877
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5878 if (!x_initialized)
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 x_initialize ();
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5881 x_initialized = 1;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5882 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5883
13232
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
5884 #ifdef HAVE_X_I18N
14489
9bc700f13f97 (x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents: 14411
diff changeset
5885 setlocale (LC_ALL, "");
13232
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
5886 #endif
e31057e55df7 (x_term_init, XTread_socket): Add HAVE_X_I18N support.
Richard M. Stallman <rms@gnu.org>
parents: 13205
diff changeset
5887
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5888 #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
5889 /* 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
5890 errors with X11R5:
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
5891 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
5892 on protocol request 18skiloaf.
9829d3c035f2 (x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents: 11375
diff changeset
5893 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
5894 #ifdef HAVE_X11XTR6
9446
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5895 XtSetLanguageProc (NULL, NULL, NULL);
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5896 #endif
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5897
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5898 {
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5899 int argc = 0;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5900 char *argv[3];
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5901
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5902 argv[0] = "";
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5903 argc = 1;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5904 if (xrm_option)
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5905 {
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5906 argv[argc++] = "-xrm";
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5907 argv[argc++] = xrm_option;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5908 }
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5909 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
5910 resource_name, EMACS_CLASS,
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5911 emacs_options, XtNumber (emacs_options),
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5912 &argc, argv);
12530
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
5913
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
5914 #ifdef HAVE_X11XTR6
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
5915 setlocale (LC_NUMERIC, "C");
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
5916 setlocale (LC_TIME, "C");
c2b2449231c2 [HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents: 12494
diff changeset
5917 #endif
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
5918 }
5672
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5919
cbc4229c1f90 (x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents: 5362
diff changeset
5920 #else /* not USE_X_TOOLKIT */
9446
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5921 #ifdef HAVE_X11R5
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5922 XSetLocaleModifiers ("");
be58ba7c209d (x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents: 9340
diff changeset
5923 #endif
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5924 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
5925 #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
5926
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5927 /* Detect failure. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5928 if (dpy == 0)
11997
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5929 {
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5930 UNBLOCK_INPUT;
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5931 return 0;
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
5932 }
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5933
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5934 /* 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
5935
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5936 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
5937
11015
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5938 #ifdef MULTI_KBOARD
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5939 {
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5940 struct x_display_info *share;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5941 Lisp_Object tail;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5942
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5943 for (share = x_display_list, tail = x_display_name_list; share;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5944 share = share->next, tail = XCONS (tail)->cdr)
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5945 if (same_x_server (XSTRING (XCONS (XCONS (tail)->car)->car)->data,
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5946 XSTRING (display_name)->data))
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5947 break;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5948 if (share)
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5949 dpyinfo->kboard = share->kboard;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5950 else
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5951 {
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5952 dpyinfo->kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5953 init_kboard (dpyinfo->kboard);
11807
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5954 if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound))
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5955 {
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5956 char *vendor = ServerVendor (dpy);
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5957 dpyinfo->kboard->Vsystem_key_alist
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5958 = call1 (Qvendor_specific_keysyms,
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5959 build_string (vendor ? vendor : ""));
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5960 }
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
5961
11015
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5962 dpyinfo->kboard->next_kboard = all_kboards;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5963 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
5964 /* 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
5965 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
5966 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
5967 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
5968 current_kboard = dpyinfo->kboard;
11015
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5969 }
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5970 dpyinfo->kboard->reference_count++;
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
5971 }
10652
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
5972 #endif
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
5973
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5974 /* 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
5975 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
5976 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
5977
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5978 /* 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
5979 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
5980 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
5981 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
5982
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5983 dpyinfo->display = dpy;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5984
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5985 #if 0
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5986 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
5987 #endif /* ! 0 */
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5988
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5989 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
5990 = (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
5991 + 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
5992 + 2);
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
5993 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
5994 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
5995
74ae34a80f94 * xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents: 1127
diff changeset
5996 /* 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
5997 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
5998
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
5999 /* 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
6000 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
6001 = 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
6002
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
6003 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
6004 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
6005 #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
6006 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
6007 #else
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
6008 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
6009 #endif
11162
95b70c82ec51 (x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents: 11122
diff changeset
6010 /* 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
6011 all versions. */
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6012 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
6013
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
6014 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
6015 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
6016 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
6017 &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
6018 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
6019 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
6020 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
6021 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
6022 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
6023 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
6024 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
6025 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
6026 dpyinfo->bitmaps = 0;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6027 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
6028 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
6029 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
6030 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
6031 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
6032 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
6033 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
6034 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
6035 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
6036 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
6037 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
6038 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
6039 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
6040 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
6041
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
6042 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
6043 = 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
6044 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
6045 = 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
6046 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
6047 = 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
6048 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
6049 = 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
6050 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
6051 = 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
6052 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
6053 = 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
6054 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
6055 = 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
6056 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
6057 = 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
6058 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
6059 = 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
6060 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
6061 = 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
6062 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
6063 = 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
6064 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
6065 = 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
6066 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
6067 = 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
6068 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
6069 = 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
6070 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
6071 = 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
6072 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
6073 = 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
6074 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
6075 = 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
6076 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
6077 = 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
6078
11162
95b70c82ec51 (x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents: 11122
diff changeset
6079 dpyinfo->cut_buffers_initialized = 0;
95b70c82ec51 (x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents: 11122
diff changeset
6080
9654
41681efe1086 Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents: 9577
diff changeset
6081 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
6082 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
6083
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9565
diff changeset
6084 #ifdef subprocesses
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9565
diff changeset
6085 /* 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
6086 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
6087 add_keyboard_wait_descriptor (connection);
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9565
diff changeset
6088 #endif
1052
b8defcaf1b61 * xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents: 1020
diff changeset
6089
4147
c6657758fb6f * xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents: 3951
diff changeset
6090 #ifndef F_SETOWN_BUG
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6091 #ifdef F_SETOWN
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6092 #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
6093 /* 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
6094 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
6095 #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
6096 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
6097 #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
6098 #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
6099 #endif /* F_SETOWN_BUG */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6100
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6101 #ifdef SIGIO
11994
b4dd8ca308dd (x_term_init): Call init_sigio only if interrupt_input.
Karl Heuer <kwzh@gnu.org>
parents: 11988
diff changeset
6102 if (interrupt_input)
b4dd8ca308dd (x_term_init): Call init_sigio only if interrupt_input.
Karl Heuer <kwzh@gnu.org>
parents: 11988
diff changeset
6103 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
6104 #endif /* ! defined (SIGIO) */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6105
11997
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
6106 UNBLOCK_INPUT;
50c7c05fc301 (x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents: 11994
diff changeset
6107
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6108 return dpyinfo;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6109 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6110
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6111 /* 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
6112 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
6113
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6114 void
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6115 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
6116 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
6117 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6118 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
6119
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6120 /* 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
6121 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
6122 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
6123 && 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
6124 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
6125 else
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6126 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6127 Lisp_Object tail;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6128
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6129 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
6130 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
6131 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6132 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
6133 dpyinfo->name_list_element))
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6134 {
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6135 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
6136 break;
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6137 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6138 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
6139 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6140 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6141
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6142 if (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
6143 x_display_list = dpyinfo->next;
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6144 else
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6145 {
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6146 struct x_display_info *tail;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6147
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6148 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
6149 if (tail->next == dpyinfo)
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6150 tail->next = tail->next->next;
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6151 }
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6152
12771
6f07c79d9a05 (x_delete_display) [AIX]: Don't call XRmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 12750
diff changeset
6153 #ifndef USE_X_TOOLKIT /* I'm told Xt does this itself. */
6f07c79d9a05 (x_delete_display) [AIX]: Don't call XRmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 12750
diff changeset
6154 #ifndef AIX /* On AIX, XCloseDisplay calls this. */
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6155 XrmDestroyDatabase (dpyinfo->xrdb);
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6156 #endif
12771
6f07c79d9a05 (x_delete_display) [AIX]: Don't call XRmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 12750
diff changeset
6157 #endif
11015
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
6158 #ifdef MULTI_KBOARD
3a2547424010 (get_perdisplay): Deleted.
Karl Heuer <kwzh@gnu.org>
parents: 10921
diff changeset
6159 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
6160 delete_kboard (dpyinfo->kboard);
10652
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
6161 #endif
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
6162 xfree (dpyinfo->font_table);
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
6163 xfree (dpyinfo->x_id_name);
f6a41cb94a75 [MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents: 10634
diff changeset
6164 xfree (dpyinfo);
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6165 }
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6166
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6167 /* 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
6168
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6169 x_initialize ()
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6170 {
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
6171 clear_frame_hook = XTclear_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6172 clear_end_of_line_hook = XTclear_end_of_line;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6173 ins_del_lines_hook = XTins_del_lines;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6174 change_line_highlight_hook = XTchange_line_highlight;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6175 insert_glyphs_hook = XTinsert_glyphs;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6176 write_glyphs_hook = XTwrite_glyphs;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6177 delete_glyphs_hook = XTdelete_glyphs;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6178 ring_bell_hook = XTring_bell;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6179 reset_terminal_modes_hook = XTreset_terminal_modes;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6180 set_terminal_modes_hook = XTset_terminal_modes;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6181 update_begin_hook = XTupdate_begin;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6182 update_end_hook = XTupdate_end;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6183 set_terminal_window_hook = XTset_terminal_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6184 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
6185 frame_up_to_date_hook = XTframe_up_to_date;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6186 cursor_to_hook = XTcursor_to;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6187 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
6188 mouse_position_hook = XTmouse_position;
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
6189 frame_rehighlight_hook = XTframe_rehighlight;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1810
diff changeset
6190 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
6191 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
6192 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
6193 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
6194 judge_scroll_bars_hook = XTjudge_scroll_bars;
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
6195
771
538c0bcb418e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
6196 scroll_region_ok = 1; /* we'll scroll partial frames */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6197 char_ins_del_ok = 0; /* just as fast to write the line */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6198 line_ins_del_ok = 1; /* we'll just blt 'em */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6199 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
6200 memory_below_frame = 0; /* we don't remember what scrolls
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6201 off the bottom */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6202 baud_rate = 19200;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6203
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6204 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
6205
4476
e7de1b007447 (x_term_init): Set the hooks before we call Fset_input_mode.
Richard M. Stallman <rms@gnu.org>
parents: 4304
diff changeset
6206 /* 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
6207 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
6208
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6209 #ifdef USE_X_TOOLKIT
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6210 XtToolkitInitialize ();
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6211 Xt_app_con = XtCreateApplicationContext ();
12494
bfbe2490dbf0 (x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents: 12431
diff changeset
6212 XtAppSetFallbackResources (Xt_app_con, Xt_default_resources);
9741
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6213 #endif
bd9d06e542c6 (x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents: 9704
diff changeset
6214
9537
f025140f7ff7 (stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents: 9526
diff changeset
6215 /* 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
6216 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
6217 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
6218 XSetIOErrorHandler (x_io_error_quitter);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6219
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6220 /* Disable Window Change signals; they are handled by X events. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6221 #ifdef SIGWINCH
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6222 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
6223 #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
6224
10743
6977bff3ff38 (x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents: 10652
diff changeset
6225 signal (SIGPIPE, x_connection_signal);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6226 }
395
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
6227
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
6228 void
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
6229 syms_of_xterm ()
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
6230 {
9704
39b34bbe59c9 (x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents: 9654
diff changeset
6231 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
6232 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
6233
1993
645d96bd3daf Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1935
diff changeset
6234 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
6235 last_mouse_scroll_bar = Qnil;
11807
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
6236
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
6237 staticpro (&Qvendor_specific_keysyms);
73fb6570f718 (Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents: 11610
diff changeset
6238 Qvendor_specific_keysyms = intern ("vendor-specific-keysyms");
395
b5cc63711808 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 369
diff changeset
6239 }
14694
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6240
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6241 /* Avoid warnings or errors from including Xlibint.h.
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6242 We don't need these functions for the rest of this file. */
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6243 #undef bzero
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6244 #undef bcopy
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6245 #undef bcmp
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6246 #undef min
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6247 #undef max
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6248
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6249 #ifdef X_CONNECTION_LOCK_FLAG
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6250 #define free loserfree
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6251 #define malloc losermalloc
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6252 /* For XlibDisplayWriting */
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6253 #include <X11/Xlibint.h>
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6254 #endif
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6255
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6256 /* Check whether display connection DPYINFO is hung
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6257 because its thread-interlock is locked.
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6258 If it is, close the connection.
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6259 Do nothing if this system does not have a thread interlock. */
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6260
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6261 x_connection_close_if_hung (dpyinfo)
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6262 struct x_display_info *dpyinfo;
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6263 {
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6264 /* This tests (1) whether X_CONNECTION_LOCK_FLAG is defined at all,
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6265 and (2) whether the name it is defined as is itself defined.
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6266 (It ought to have been defined by Xlibint.h. */
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6267 #if X_CONNECTION_LOCK_FLAG
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6268
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6269 if (dpyinfo->display->flags & X_CONNECTION_LOCK_FLAG)
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6270 {
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6271 /* If the thread-interlock is locked, assume this connection is dead.
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6272 This assumes that the library does not make other threads
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6273 that can be locking the display legitimately. */
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6274
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6275 dpyinfo->display->flags &= ~X_CONNECTION_LOCK_FLAG;
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6276 x_connection_closed (dpyinfo->display, "connection was lost");
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6277 }
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6278 #endif /* X_CONNECTION_LOCK_FLAG */
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6279 }
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6280
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6281 /* Don't put any additional functions here! */
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6282
41de9b2640a1 (X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14692
diff changeset
6283 #endif /* not HAVE_X_WINDOWS */