Mercurial > emacs
annotate src/xterm.c @ 66003:eefcdbee90bc
(glyph_rect): Return 0 if position is outside text area.
| author | Kim F. Storm <storm@cua.dk> |
|---|---|
| date | Mon, 10 Oct 2005 22:54:19 +0000 |
| parents | 42e5365826f1 |
| children | 699f7f132908 |
| rev | line source |
|---|---|
| 286 | 1 /* X Communication module for terminals which understand the X protocol. |
|
59745
2177d96b9c08
(x_error_quitter): Add a prototype. Make it static again.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59725
diff
changeset
|
2 Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, |
|
64770
a0d1312ede66
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64084
diff
changeset
|
3 2002, 2003, 2004, 2005 Free Software Foundation, Inc. |
| 286 | 4 |
| 5 This file is part of GNU Emacs. | |
| 6 | |
| 7 GNU Emacs is free software; you can redistribute it and/or modify | |
| 8 it under the terms of the GNU General Public License as published by | |
| 621 | 9 the Free Software Foundation; either version 2, or (at your option) |
| 286 | 10 any later version. |
| 11 | |
| 12 GNU Emacs is distributed in the hope that it will be useful, | |
| 13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 GNU General Public License for more details. | |
| 16 | |
| 17 You should have received a copy of the GNU General Public License | |
| 18 along with GNU Emacs; see the file COPYING. If not, write to | |
| 64084 | 19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 20 Boston, MA 02110-1301, USA. */ | |
| 286 | 21 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
22 /* New display code by Gerd Moellmann <gerd@gnu.org>. */ |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
23 /* 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
|
24 |
|
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
25921
diff
changeset
|
25 #include <config.h> |
|
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
25921
diff
changeset
|
26 |
|
2977
ddcad1457cd5
Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents:
2958
diff
changeset
|
27 /* 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
|
28 /* 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
|
29 #include <signal.h> |
|
ddcad1457cd5
Move signal.h and stdio.h before config.h.
Richard M. Stallman <rms@gnu.org>
parents:
2958
diff
changeset
|
30 |
|
7902
22b9aaaf0302
Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents:
7870
diff
changeset
|
31 #include <stdio.h> |
|
22b9aaaf0302
Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents:
7870
diff
changeset
|
32 |
| 286 | 33 #ifdef HAVE_X_WINDOWS |
| 34 | |
| 35 #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
|
36 #include "blockinput.h" |
| 286 | 37 |
|
21933
58f3be08e692
Include syssignal.h after lisp.h.
Andreas Schwab <schwab@suse.de>
parents:
21903
diff
changeset
|
38 /* Need syssignal.h for various externs and definitions that may be required |
|
58f3be08e692
Include syssignal.h after lisp.h.
Andreas Schwab <schwab@suse.de>
parents:
21903
diff
changeset
|
39 by some configurations for calls to signal later in this source file. */ |
|
58f3be08e692
Include syssignal.h after lisp.h.
Andreas Schwab <schwab@suse.de>
parents:
21903
diff
changeset
|
40 #include "syssignal.h" |
|
58f3be08e692
Include syssignal.h after lisp.h.
Andreas Schwab <schwab@suse.de>
parents:
21903
diff
changeset
|
41 |
| 286 | 42 /* This may include sys/types.h, and that somehow loses |
| 43 if this is not done before the other system files. */ | |
| 44 #include "xterm.h" | |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
45 #include <X11/cursorfont.h> |
| 286 | 46 |
| 47 /* Load sys/types.h if not already loaded. | |
| 48 In some systems loading it twice is suicidal. */ | |
| 49 #ifndef makedev | |
| 50 #include <sys/types.h> | |
|
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
51 #endif /* makedev */ |
| 286 | 52 |
|
16220
02044b05d8e0
Replaced symbol BSD with BSD_SYSTEM.
Karl Heuer <kwzh@gnu.org>
parents:
16209
diff
changeset
|
53 #ifdef BSD_SYSTEM |
| 286 | 54 #include <sys/ioctl.h> |
|
16220
02044b05d8e0
Replaced symbol BSD with BSD_SYSTEM.
Karl Heuer <kwzh@gnu.org>
parents:
16209
diff
changeset
|
55 #endif /* ! defined (BSD_SYSTEM) */ |
| 286 | 56 |
|
3355
e0c2e8a2ef75
(XTread_socket, case KeyPress) [HPUX]: Test IsModifiedKey.
Richard M. Stallman <rms@gnu.org>
parents:
3284
diff
changeset
|
57 #include "systty.h" |
| 555 | 58 #include "systime.h" |
| 286 | 59 |
|
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
60 #ifndef INCLUDED_FCNTL |
| 286 | 61 #include <fcntl.h> |
|
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
62 #endif |
| 286 | 63 #include <ctype.h> |
| 64 #include <errno.h> | |
| 65 #include <setjmp.h> | |
| 66 #include <sys/stat.h> | |
| 10366 | 67 /* Caused redefinition of DBL_DIG on Netbsd; seems not to be needed. */ |
| 68 /* #include <sys/param.h> */ | |
| 286 | 69 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
70 #include "charset.h" |
| 30748 | 71 #include "coding.h" |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
72 #include "ccl.h" |
|
23515
1e52542fb338
Include frame.h before fontset.h.
Kenichi Handa <handa@m17n.org>
parents:
23162
diff
changeset
|
73 #include "frame.h" |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
74 #include "dispextern.h" |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
75 #include "fontset.h" |
| 286 | 76 #include "termhooks.h" |
| 77 #include "termopts.h" | |
| 78 #include "termchar.h" | |
| 79 #include "gnu.h" | |
| 80 #include "disptab.h" | |
| 81 #include "buffer.h" | |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
82 #include "window.h" |
| 8652 | 83 #include "keyboard.h" |
| 8848 | 84 #include "intervals.h" |
| 21514 | 85 #include "process.h" |
|
27428
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
86 #include "atimer.h" |
|
39697
0b986bb45526
Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39682
diff
changeset
|
87 #include "keymap.h" |
| 286 | 88 |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
89 #ifdef USE_X_TOOLKIT |
|
15117
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
90 #include <X11/Shell.h> |
|
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
91 #endif |
|
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
92 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
93 #ifdef HAVE_SYS_TIME_H |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
94 #include <sys/time.h> |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
95 #endif |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
96 #ifdef HAVE_UNISTD_H |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
97 #include <unistd.h> |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
98 #endif |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
99 |
| 49322 | 100 #ifdef USE_GTK |
| 101 #include "gtkutil.h" | |
| 102 #endif | |
| 103 | |
|
39922
538760a4422e
(xlwmenu_window_p, xlwmenu_redisplay): Add prototypes.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39914
diff
changeset
|
104 #ifdef USE_LUCID |
| 46113 | 105 extern int xlwmenu_window_p P_ ((Widget w, Window window)); |
|
39922
538760a4422e
(xlwmenu_window_p, xlwmenu_redisplay): Add prototypes.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39914
diff
changeset
|
106 extern void xlwmenu_redisplay P_ ((Widget)); |
|
538760a4422e
(xlwmenu_window_p, xlwmenu_redisplay): Add prototypes.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39914
diff
changeset
|
107 #endif |
|
538760a4422e
(xlwmenu_window_p, xlwmenu_redisplay): Add prototypes.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39914
diff
changeset
|
108 |
| 49322 | 109 #if defined (USE_X_TOOLKIT) || defined (USE_GTK) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
110 |
| 30321 | 111 extern void free_frame_menubar P_ ((struct frame *)); |
| 112 extern struct frame *x_menubar_window_to_frame P_ ((struct x_display_info *, | |
| 113 int)); | |
| 49322 | 114 #endif |
| 115 | |
| 116 #ifdef USE_X_TOOLKIT | |
|
13507
9a9f459075af
(HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
117 #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
|
118 #define HACK_EDITRES |
|
6941
a914781ef58a
(Xatom_editres_name): Variable defined.
Richard M. Stallman <rms@gnu.org>
parents:
6934
diff
changeset
|
119 extern void _XEditResCheckMessages (); |
|
13507
9a9f459075af
(HACK_EDITRES): Define here as in xfns.c.
Richard M. Stallman <rms@gnu.org>
parents:
13363
diff
changeset
|
120 #endif /* not NO_EDITRES */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
121 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
122 /* Include toolkit specific headers for the scroll bar widget. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
123 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
124 #ifdef USE_TOOLKIT_SCROLL_BARS |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
125 #if defined USE_MOTIF |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
126 #include <Xm/Xm.h> /* for LESSTIF_VERSION */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
127 #include <Xm/ScrollBar.h> |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
128 #else /* !USE_MOTIF i.e. use Xaw */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
129 |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
130 #ifdef HAVE_XAW3D |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
131 #include <X11/Xaw3d/Simple.h> |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
132 #include <X11/Xaw3d/Scrollbar.h> |
|
61181
3b4e4d883374
Include ThreeD.h for XtNbeNiceToColormap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60135
diff
changeset
|
133 #include <X11/Xaw3d/ThreeD.h> |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
134 #else /* !HAVE_XAW3D */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
135 #include <X11/Xaw/Simple.h> |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
136 #include <X11/Xaw/Scrollbar.h> |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
137 #endif /* !HAVE_XAW3D */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
138 #ifndef XtNpickTop |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
139 #define XtNpickTop "pickTop" |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
140 #endif /* !XtNpickTop */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
141 #endif /* !USE_MOTIF */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
142 #endif /* USE_TOOLKIT_SCROLL_BARS */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
143 |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
144 #endif /* USE_X_TOOLKIT */ |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
145 |
| 49322 | 146 #if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK) |
|
6022
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
147 #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
|
148 #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
|
149 #endif |
|
713d4d840a11
(x_had_errors_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
6010
diff
changeset
|
150 |
|
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
151 #ifdef USE_X_TOOLKIT |
| 12189 | 152 #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
|
153 #ifndef XtNinitialState |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
154 #define XtNinitialState "initialState" |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
155 #endif |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
156 #endif |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
157 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
158 #define abs(x) ((x) < 0 ? -(x) : (x)) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
159 |
| 51129 | 160 /* Default to using XIM if available. */ |
|
51823
01bf5601e788
(use_xim) [!USE_XIM]: Default to disable XIM if emacs
Kim F. Storm <storm@cua.dk>
parents:
51676
diff
changeset
|
161 #ifdef USE_XIM |
| 51129 | 162 int use_xim = 1; |
|
51823
01bf5601e788
(use_xim) [!USE_XIM]: Default to disable XIM if emacs
Kim F. Storm <storm@cua.dk>
parents:
51676
diff
changeset
|
163 #else |
|
01bf5601e788
(use_xim) [!USE_XIM]: Default to disable XIM if emacs
Kim F. Storm <storm@cua.dk>
parents:
51676
diff
changeset
|
164 int use_xim = 0; /* configure --without-xim */ |
|
01bf5601e788
(use_xim) [!USE_XIM]: Default to disable XIM if emacs
Kim F. Storm <storm@cua.dk>
parents:
51676
diff
changeset
|
165 #endif |
|
01bf5601e788
(use_xim) [!USE_XIM]: Default to disable XIM if emacs
Kim F. Storm <storm@cua.dk>
parents:
51676
diff
changeset
|
166 |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
167 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
168 |
|
34869
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
169 /* Non-nil means Emacs uses toolkit scroll bars. */ |
|
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
170 |
|
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
171 Lisp_Object Vx_toolkit_scroll_bars; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
172 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
173 /* Non-zero means that a HELP_EVENT has been generated since Emacs |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
174 start. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
175 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
176 static int any_help_event_p; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
177 |
|
44359
ff9f7aee02c8
Rename autoselect_window_p to mouse_autoselect_window.
Pavel Jan?k <Pavel@Janik.cz>
parents:
44313
diff
changeset
|
178 /* Last window where we saw the mouse. Used by mouse-autoselect-window. */ |
|
44301
1892db006468
(autoselect_window_p): Renamed from `x_autoselect_window_p'.
Pavel Jan?k <Pavel@Janik.cz>
parents:
44275
diff
changeset
|
179 static Lisp_Object last_window; |
|
43343
ac7b0c0802cc
(x-autoselect-window): New variable.
Pavel Jan?k <Pavel@Janik.cz>
parents:
43302
diff
changeset
|
180 |
|
37153
3799cab1815b
(x_use_underline_position_properties): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37143
diff
changeset
|
181 /* Non-zero means make use of UNDERLINE_POSITION font properties. */ |
|
3799cab1815b
(x_use_underline_position_properties): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37143
diff
changeset
|
182 |
|
3799cab1815b
(x_use_underline_position_properties): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37143
diff
changeset
|
183 int x_use_underline_position_properties; |
|
3799cab1815b
(x_use_underline_position_properties): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37143
diff
changeset
|
184 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
185 /* This is a chain of structures for all the X displays currently in |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
186 use. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
187 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
188 struct x_display_info *x_display_list; |
| 286 | 189 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
190 /* This is a list of cons cells, each of the form (NAME |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
191 . FONT-LIST-CACHE), one for each element of x_display_list and in |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
192 the same order. NAME is the name of the frame. FONT-LIST-CACHE |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
193 records previous values returned by x-list-fonts. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
194 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
195 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
|
196 |
|
2474
86c8a6e08fd4
Fix typo in comment delimiter.
Richard M. Stallman <rms@gnu.org>
parents:
2468
diff
changeset
|
197 /* Frame being updated by update_frame. This is declared in term.c. |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
198 This is set by update_begin and looked at by all the XT functions. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
199 It is zero while not inside an update. In that case, the XT |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
200 functions assume that `selected_frame' is the frame to apply to. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
201 |
|
2468
35aa32e1a003
* xterm.c (updating_frame): Declare this extern instead of static,
Jim Blandy <jimb@redhat.com>
parents:
2439
diff
changeset
|
202 extern struct frame *updating_frame; |
| 771 | 203 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
204 /* This is a frame waiting to be auto-raised, within XTread_socket. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
205 |
|
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
206 struct frame *pending_autoraise_frame; |
|
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
207 |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
208 #ifdef USE_X_TOOLKIT |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
209 /* The application context for Xt use. */ |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
210 XtAppContext Xt_app_con; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
211 static String Xt_default_resources[] = {0}; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
212 #endif /* USE_X_TOOLKIT */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
213 |
|
27428
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
214 /* Non-zero means user is interacting with a toolkit scroll bar. */ |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
215 |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
216 static int toolkit_scroll_bar_interaction; |
| 286 | 217 |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
218 /* Non-zero means to not move point as a result of clicking on a |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
219 frame to focus it (when focus-follows-mouse is nil). */ |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
220 |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
221 int x_mouse_click_focus_ignore_position; |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
222 |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
223 /* Non-zero timeout value means ignore next mouse click if it arrives |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
224 before that timeout elapses (i.e. as part of the same sequence of |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
225 events resulting from clicking on a frame to select it). */ |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
226 |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
227 static unsigned long ignore_next_mouse_click_timeout; |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
228 |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
229 /* Mouse movement. |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
230 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
231 Formerly, we used PointerMotionHintMask (in standard_event_mask) |
|
15042
c99dd01d9334
(note_mouse_movement): Don't call XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
14963
diff
changeset
|
232 so that we would have to call XQueryPointer after each MotionNotify |
|
c99dd01d9334
(note_mouse_movement): Don't call XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
14963
diff
changeset
|
233 event to ask for another such event. However, this made mouse tracking |
|
c99dd01d9334
(note_mouse_movement): Don't call XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
14963
diff
changeset
|
234 slow, and there was a bug that made it eventually stop. |
|
c99dd01d9334
(note_mouse_movement): Don't call XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
14963
diff
changeset
|
235 |
|
c99dd01d9334
(note_mouse_movement): Don't call XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
14963
diff
changeset
|
236 Simply asking for MotionNotify all the time seems to work better. |
|
c99dd01d9334
(note_mouse_movement): Don't call XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
14963
diff
changeset
|
237 |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
238 In order to avoid asking for motion events and then throwing most |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
239 of them away or busy-polling the server for mouse positions, we ask |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
240 the server for pointer motion hints. This means that we get only |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
241 one event per group of mouse movements. "Groups" are delimited by |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
242 other kinds of events (focus changes and button clicks, for |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
243 example), or by XQueryPointer calls; when one of these happens, we |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
244 get another MotionNotify event the next time the mouse moves. This |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
245 is at least as efficient as getting motion events when mouse |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
246 tracking is on, and I suspect only negligibly worse when tracking |
|
15042
c99dd01d9334
(note_mouse_movement): Don't call XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
14963
diff
changeset
|
247 is off. */ |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
248 |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
249 /* Where the mouse was last time we reported a mouse event. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
250 |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
251 static XRectangle last_mouse_glyph; |
|
15803
f214673e68a8
(XTread_socket): Pass keys in menu bar to toolkit alone
Richard M. Stallman <rms@gnu.org>
parents:
15794
diff
changeset
|
252 static Lisp_Object last_mouse_press_frame; |
|
f214673e68a8
(XTread_socket): Pass keys in menu bar to toolkit alone
Richard M. Stallman <rms@gnu.org>
parents:
15794
diff
changeset
|
253 |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
254 /* 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
|
255 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
256 If the last X motion event occurred in a scroll bar, we set this so |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
257 XTmouse_position can know whether to report a scroll bar motion or |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
258 an ordinary motion. |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
259 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
260 If the last X motion event didn't occur in a scroll bar, we set |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
261 this to Qnil, to tell XTmouse_position to return an ordinary motion |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
262 event. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
263 |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
264 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
|
265 |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
266 /* 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
|
267 return the time associated with the position it returns, but there |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
268 doesn't seem to be any way to wrest the time-stamp from the server |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
269 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
|
270 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
|
271 it's somewhat accurate. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
272 |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
273 static Time last_mouse_movement_time; |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
274 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
275 /* Incremented by XTread_socket whenever it really tries to read |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
276 events. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
277 |
|
9337
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
278 #ifdef __STDC__ |
|
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
279 static int volatile input_signal_count; |
|
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
280 #else |
|
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
281 static int input_signal_count; |
|
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
282 #endif |
|
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
283 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
284 /* Used locally within XTread_socket. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
285 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
286 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
|
287 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
288 /* Initial values of argv and argc. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
289 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
290 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
|
291 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
|
292 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
293 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
|
294 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
295 /* Tells if a window manager is present or not. */ |
| 286 | 296 |
| 297 extern Lisp_Object Vx_no_window_manager; | |
| 298 | |
|
53336
9a1b69cfa7be
(Qface, Qmouse_face): Remove unused externs.
Kim F. Storm <storm@cua.dk>
parents:
53083
diff
changeset
|
299 extern Lisp_Object Qeql; |
|
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
300 |
| 286 | 301 extern int errno; |
| 302 | |
|
2661
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
303 /* A mask of extra modifier bits to put into every keyboard char. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
304 |
|
43713
f92c4d87863a
Change defvar_int def and vars to use EMACS_INT instead of just int.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43621
diff
changeset
|
305 extern EMACS_INT extra_keyboard_modifiers; |
|
1841
338e4ffdb54b
(XTread_socket): Support extra_keyboard_modifiers.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
306 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
307 /* The keysyms to use for the various modifiers. */ |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
308 |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
309 Lisp_Object Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym, Vx_super_keysym; |
| 48085 | 310 Lisp_Object Vx_keysym_table; |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
311 static Lisp_Object Qalt, Qhyper, Qmeta, Qsuper, Qmodifier_value; |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
312 |
|
11807
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
313 static Lisp_Object Qvendor_specific_keysyms; |
| 51405 | 314 static Lisp_Object Qlatin_1; |
|
11807
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
315 |
| 30321 | 316 extern XrmDatabase x_load_resources P_ ((Display *, char *, char *, char *)); |
| 52631 | 317 extern int x_bitmap_mask P_ ((FRAME_PTR, int)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
318 |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
319 static int x_alloc_nearest_color_1 P_ ((Display *, Colormap, XColor *)); |
|
35487
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
320 static void x_set_window_size_1 P_ ((struct frame *, int, int, int)); |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
321 static const XColor *x_color_cells P_ ((Display *, int *)); |
|
30160
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
322 static void x_update_window_end P_ ((struct window *, int, int)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
323 void x_delete_display P_ ((struct x_display_info *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
324 static unsigned int x_x_to_emacs_modifiers P_ ((struct x_display_info *, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
325 unsigned)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
326 static int x_io_error_quitter P_ ((Display *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
327 int x_catch_errors P_ ((Display *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
328 void x_uncatch_errors P_ ((Display *, int)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
329 void x_lower_frame P_ ((struct frame *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
330 void x_scroll_bar_clear P_ ((struct frame *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
331 int x_had_errors_p P_ ((Display *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
332 void x_wm_set_size_hint P_ ((struct frame *, long, int)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
333 void x_raise_frame P_ ((struct frame *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
334 void x_set_window_size P_ ((struct frame *, int, int, int)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
335 void x_wm_set_window_state P_ ((struct frame *, int)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
336 void x_wm_set_icon_pixmap P_ ((struct frame *, int)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
337 void x_initialize P_ ((void)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
338 static void x_font_min_bounds P_ ((XFontStruct *, int *, int *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
339 static int x_compute_min_glyph_bounds P_ ((struct frame *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
340 static void x_update_end P_ ((struct frame *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
341 static void XTframe_up_to_date P_ ((struct frame *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
342 static void XTset_terminal_modes P_ ((void)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
343 static void XTreset_terminal_modes P_ ((void)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
344 static void x_clear_frame P_ ((void)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
345 static void frame_highlight P_ ((struct frame *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
346 static void frame_unhighlight P_ ((struct frame *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
347 static void x_new_focus_frame P_ ((struct x_display_info *, struct frame *)); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
348 static void x_focus_changed P_ ((int, int, struct x_display_info *, |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
349 struct frame *, struct input_event *)); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
350 static void x_detect_focus_change P_ ((struct x_display_info *, |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
351 XEvent *, struct input_event *)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
352 static void XTframe_rehighlight P_ ((struct frame *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
353 static void x_frame_rehighlight P_ ((struct x_display_info *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
354 static void x_draw_hollow_cursor P_ ((struct window *, struct glyph_row *)); |
|
44690
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
355 static void x_draw_bar_cursor P_ ((struct window *, struct glyph_row *, int, |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
356 enum text_cursor_kinds)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
357 |
|
58403
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
358 static void x_clip_to_row P_ ((struct window *, struct glyph_row *, int, GC)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
359 static void x_flush P_ ((struct frame *f)); |
| 30321 | 360 static void x_update_begin P_ ((struct frame *)); |
| 361 static void x_update_window_begin P_ ((struct window *)); | |
| 362 static void x_after_update_window_line P_ ((struct glyph_row *)); | |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
363 static struct scroll_bar *x_window_to_scroll_bar P_ ((Display *, Window)); |
|
36492
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
364 static void x_scroll_bar_report_motion P_ ((struct frame **, Lisp_Object *, |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
365 enum scroll_bar_part *, |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
366 Lisp_Object *, Lisp_Object *, |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
367 unsigned long *)); |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
368 static void x_check_fullscreen P_ ((struct frame *)); |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
369 static void x_check_expected_move P_ ((struct frame *)); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
370 static int handle_one_xevent P_ ((struct x_display_info *, XEvent *, |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
371 int *, struct input_event *)); |
| 49322 | 372 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
373 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
374 /* Flush display of frame F, or of all frames if F is null. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
375 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
376 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
377 x_flush (f) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
378 struct frame *f; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
379 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
380 BLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
381 if (f == NULL) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
382 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
383 Lisp_Object rest, frame; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
384 FOR_EACH_FRAME (rest, frame) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
385 x_flush (XFRAME (frame)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
386 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
387 else if (FRAME_X_P (f)) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
388 XFlush (FRAME_X_DISPLAY (f)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
389 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
390 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
391 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
392 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
393 /* Remove calls to XFlush by defining XFlush to an empty replacement. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
394 Calls to XFlush should be unnecessary because the X output buffer |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
395 is flushed automatically as needed by calls to XPending, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
396 XNextEvent, or XWindowEvent according to the XFlush man page. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
397 XTread_socket calls XPending. Removing XFlush improves |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
398 performance. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
399 |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
400 #define XFlush(DISPLAY) (void) 0 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
401 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
402 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
403 /*********************************************************************** |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
404 Debugging |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
405 ***********************************************************************/ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
406 |
|
12192
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
407 #if 0 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
408 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
409 /* This is a function useful for recording debugging information about |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
410 the sequence of occurrences in this file. */ |
|
12192
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
411 |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
412 struct record |
|
12192
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
413 { |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
414 char *locus; |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
415 int type; |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
416 }; |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
417 |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
418 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
|
419 |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
420 int event_record_index; |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
421 |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
422 record_event (locus, type) |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
423 char *locus; |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
424 int type; |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
425 { |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
426 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
|
427 event_record_index = 0; |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
428 |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
429 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
|
430 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
|
431 event_record_index++; |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
432 } |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
433 |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
434 #endif /* 0 */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
435 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
436 |
|
12192
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
437 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
438 /* 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
|
439 |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
440 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
|
441 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
|
442 Display *dpy; |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
443 { |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
444 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
|
445 |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
446 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
|
447 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
|
448 return dpyinfo; |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
449 |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
450 return 0; |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
451 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
452 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
453 |
|
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
454 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
455 /*********************************************************************** |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
456 Starting and ending an update |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
457 ***********************************************************************/ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
458 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
459 /* Start an update of frame F. This function is installed as a hook |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
460 for update_begin, i.e. it is called when update_begin is called. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
461 This function is called prior to calls to x_update_window_begin for |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
462 each window being updated. Currently, there is nothing to do here |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
463 because all interesting stuff is done on a window basis. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
464 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
465 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
466 x_update_begin (f) |
| 771 | 467 struct frame *f; |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
468 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
469 /* Nothing to do. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
470 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
471 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
472 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
473 /* Start update of window W. Set the global variable updated_window |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
474 to the window being updated and set output_cursor to the cursor |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
475 position of W. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
476 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
477 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
478 x_update_window_begin (w) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
479 struct window *w; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
480 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
481 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
482 struct x_display_info *display_info = FRAME_X_DISPLAY_INFO (f); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
483 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
484 updated_window = w; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
485 set_output_cursor (&w->cursor); |
| 286 | 486 |
| 487 BLOCK_INPUT; | |
|
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
488 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
489 if (f == display_info->mouse_face_mouse_frame) |
|
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
490 { |
|
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
491 /* Don't do highlighting for mouse motion during the update. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
492 display_info->mouse_face_defer = 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
493 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
494 /* If F needs to be redrawn, simply forget about any prior mouse |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
495 highlighting. */ |
|
10274
83aaf59dabbe
(XTupdate_begin): Fix backward test in previous change.
Richard M. Stallman <rms@gnu.org>
parents:
10223
diff
changeset
|
496 if (FRAME_GARBAGED_P (f)) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
497 display_info->mouse_face_window = Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
498 |
|
30153
1eb41ec71ea5
(x_update_window_begin): No need to turn off the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
30137
diff
changeset
|
499 #if 0 /* Rows in a current matrix containing glyphs in mouse-face have |
|
1eb41ec71ea5
(x_update_window_begin): No need to turn off the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
30137
diff
changeset
|
500 their mouse_face_p flag set, which means that they are always |
|
1eb41ec71ea5
(x_update_window_begin): No need to turn off the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
30137
diff
changeset
|
501 unequal to rows in a desired matrix which never have that |
|
1eb41ec71ea5
(x_update_window_begin): No need to turn off the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
30137
diff
changeset
|
502 flag set. So, rows containing mouse-face glyphs are never |
|
1eb41ec71ea5
(x_update_window_begin): No need to turn off the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
30137
diff
changeset
|
503 scrolled, and we don't have to switch the mouse highlight off |
|
1eb41ec71ea5
(x_update_window_begin): No need to turn off the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
30137
diff
changeset
|
504 here to prevent it from being scrolled. */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
505 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
506 /* Can we tell that this update does not affect the window |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
507 where the mouse highlight is? If so, no need to turn off. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
508 Likewise, don't do anything if the frame is garbaged; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
509 in that case, the frame's current matrix that we would use |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
510 is all wrong, and we will redisplay that line anyway. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
511 if (!NILP (display_info->mouse_face_window) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
512 && w == XWINDOW (display_info->mouse_face_window)) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
513 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
514 int i; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
515 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
516 for (i = 0; i < w->desired_matrix->nrows; ++i) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
517 if (MATRIX_ROW_ENABLED_P (w->desired_matrix, i)) |
|
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
518 break; |
|
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
519 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
520 if (i < w->desired_matrix->nrows) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
521 clear_mouse_face (display_info); |
|
6660
cb14d76e993c
(note_mouse_highlight): Do nothing if gc_in_progress.
Richard M. Stallman <rms@gnu.org>
parents:
6649
diff
changeset
|
522 } |
|
30153
1eb41ec71ea5
(x_update_window_begin): No need to turn off the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
30137
diff
changeset
|
523 #endif /* 0 */ |
|
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
524 } |
|
8781
98741404d3e0
Delete X11 conditionals.
Richard M. Stallman <rms@gnu.org>
parents:
8724
diff
changeset
|
525 |
| 286 | 526 UNBLOCK_INPUT; |
| 527 } | |
| 528 | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
529 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
530 /* Draw a vertical window border from (x,y0) to (x,y1) */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
531 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
532 static void |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
533 x_draw_vertical_window_border (w, x, y0, y1) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
534 struct window *w; |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
535 int x, y0, y1; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
536 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
537 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
|
63879
bb26dfdf2698
(x_draw_vertical_window_border): Use foreground of
Juri Linkov <juri@jurta.org>
parents:
63103
diff
changeset
|
538 struct face *face; |
|
bb26dfdf2698
(x_draw_vertical_window_border): Use foreground of
Juri Linkov <juri@jurta.org>
parents:
63103
diff
changeset
|
539 |
|
bb26dfdf2698
(x_draw_vertical_window_border): Use foreground of
Juri Linkov <juri@jurta.org>
parents:
63103
diff
changeset
|
540 face = FACE_FROM_ID (f, VERTICAL_BORDER_FACE_ID); |
|
bb26dfdf2698
(x_draw_vertical_window_border): Use foreground of
Juri Linkov <juri@jurta.org>
parents:
63103
diff
changeset
|
541 if (face) |
|
bb26dfdf2698
(x_draw_vertical_window_border): Use foreground of
Juri Linkov <juri@jurta.org>
parents:
63103
diff
changeset
|
542 XSetForeground (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc, |
|
bb26dfdf2698
(x_draw_vertical_window_border): Use foreground of
Juri Linkov <juri@jurta.org>
parents:
63103
diff
changeset
|
543 face->foreground); |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
544 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
545 XDrawLine (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
546 f->output_data.x->normal_gc, x, y0, x, y1); |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
547 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
548 |
|
30160
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
549 /* End update of window W (which is equal to updated_window). |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
550 |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
551 Draw vertical borders between horizontally adjacent windows, and |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
552 display W's cursor if CURSOR_ON_P is non-zero. |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
553 |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
554 MOUSE_FACE_OVERWRITTEN_P non-zero means that some row containing |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
555 glyphs in mouse-face were overwritten. In that case we have to |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
556 make sure that the mouse-highlight is properly redrawn. |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
557 |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
558 W may be a menu bar pseudo-window in case we don't have X toolkit |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
559 support. Such windows don't have a cursor, so don't display it |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
560 here. */ |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
561 |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
562 static void |
|
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
563 x_update_window_end (w, cursor_on_p, mouse_face_overwritten_p) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
564 struct window *w; |
|
30160
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
565 int cursor_on_p, mouse_face_overwritten_p; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
566 { |
|
36929
9d0ed4b0c89a
(x_update_window_end): Handle overwritten mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
36880
diff
changeset
|
567 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (XFRAME (w->frame)); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
568 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
569 if (!w->pseudo_window_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
570 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
571 BLOCK_INPUT; |
|
30160
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
572 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
573 if (cursor_on_p) |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
574 display_and_set_cursor (w, 1, output_cursor.hpos, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
575 output_cursor.vpos, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
576 output_cursor.x, output_cursor.y); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
577 |
|
57373
38e45bf0128a
(x_update_window_end): Fix flicker on vertical line between
Kim F. Storm <storm@cua.dk>
parents:
57333
diff
changeset
|
578 if (draw_window_fringes (w, 1)) |
|
38e45bf0128a
(x_update_window_end): Fix flicker on vertical line between
Kim F. Storm <storm@cua.dk>
parents:
57333
diff
changeset
|
579 x_draw_vertical_border (w); |
|
53609
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
580 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
581 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
582 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
583 |
|
36929
9d0ed4b0c89a
(x_update_window_end): Handle overwritten mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
36880
diff
changeset
|
584 /* If a row with mouse-face was overwritten, arrange for |
|
9d0ed4b0c89a
(x_update_window_end): Handle overwritten mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
36880
diff
changeset
|
585 XTframe_up_to_date to redisplay the mouse highlight. */ |
|
9d0ed4b0c89a
(x_update_window_end): Handle overwritten mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
36880
diff
changeset
|
586 if (mouse_face_overwritten_p) |
|
9d0ed4b0c89a
(x_update_window_end): Handle overwritten mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
36880
diff
changeset
|
587 { |
|
9d0ed4b0c89a
(x_update_window_end): Handle overwritten mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
36880
diff
changeset
|
588 dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1; |
|
9d0ed4b0c89a
(x_update_window_end): Handle overwritten mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
36880
diff
changeset
|
589 dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1; |
|
9d0ed4b0c89a
(x_update_window_end): Handle overwritten mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
36880
diff
changeset
|
590 dpyinfo->mouse_face_window = Qnil; |
|
9d0ed4b0c89a
(x_update_window_end): Handle overwritten mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
36880
diff
changeset
|
591 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
592 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
593 updated_window = NULL; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
594 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
595 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
596 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
597 /* End update of frame F. This function is installed as a hook in |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
598 update_end. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
599 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
600 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
601 x_update_end (f) |
| 771 | 602 struct frame *f; |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
603 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
604 /* Mouse highlight may be displayed again. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
605 FRAME_X_DISPLAY_INFO (f)->mouse_face_defer = 0; |
| 286 | 606 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
607 #ifndef XFlush |
| 286 | 608 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
|
609 XFlush (FRAME_X_DISPLAY (f)); |
| 286 | 610 UNBLOCK_INPUT; |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
611 #endif |
| 286 | 612 } |
|
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
613 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
614 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
615 /* This function is called from various places in xdisp.c whenever a |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
616 complete update has been performed. The global variable |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
617 updated_window is not available here. */ |
|
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
618 |
| 21514 | 619 static void |
|
6616
951c8941b931
[INCLUDED_FCNTL]: Don't include fcntl.h again.
Richard M. Stallman <rms@gnu.org>
parents:
6560
diff
changeset
|
620 XTframe_up_to_date (f) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
621 struct frame *f; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
622 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
623 if (FRAME_X_P (f)) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
624 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
625 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
|
30160
432da5a9f734
(x_update_window_end): Add parameter
Gerd Moellmann <gerd@gnu.org>
parents:
30153
diff
changeset
|
626 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
627 if (dpyinfo->mouse_face_deferred_gc |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
628 || f == dpyinfo->mouse_face_mouse_frame) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
629 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
630 BLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
631 if (dpyinfo->mouse_face_mouse_frame) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
632 note_mouse_highlight (dpyinfo->mouse_face_mouse_frame, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
633 dpyinfo->mouse_face_mouse_x, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
634 dpyinfo->mouse_face_mouse_y); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
635 dpyinfo->mouse_face_deferred_gc = 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
636 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
637 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
638 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
639 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
640 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
641 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
642 /* Draw truncation mark bitmaps, continuation mark bitmaps, overlay |
| 41134 | 643 arrow bitmaps, or clear the fringes if no bitmaps are required |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
644 before DESIRED_ROW is made current. The window being updated is |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
645 found in updated_window. This function It is called from |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
646 update_window_line only if it is known that there are differences |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
647 between bitmaps to be drawn between current row and DESIRED_ROW. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
648 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
649 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
650 x_after_update_window_line (desired_row) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
651 struct glyph_row *desired_row; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
652 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
653 struct window *w = updated_window; |
|
40435
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
654 struct frame *f; |
|
40514
a4363606beb1
(x_after_update_window_line): Don't run the code
Gerd Moellmann <gerd@gnu.org>
parents:
40499
diff
changeset
|
655 int width, height; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
656 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
657 xassert (w); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
658 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
659 if (!desired_row->mode_line_p && !w->pseudo_window_p) |
|
53609
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
660 desired_row->redraw_fringe_bitmaps_p = 1; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
661 |
|
40435
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
662 /* When a window has disappeared, make sure that no rest of |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
663 full-width rows stays visible in the internal border. Could |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
664 check here if updated_window is the leftmost/rightmost window, |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
665 but I guess it's not worth doing since vertically split windows |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
666 are almost never used, internal border is rarely set, and the |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
667 overhead is very small. */ |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
668 if (windows_or_buffers_changed |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
669 && desired_row->full_width_p |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
670 && (f = XFRAME (w->frame), |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
671 width = FRAME_INTERNAL_BORDER_WIDTH (f), |
|
40514
a4363606beb1
(x_after_update_window_line): Don't run the code
Gerd Moellmann <gerd@gnu.org>
parents:
40499
diff
changeset
|
672 width != 0) |
|
a4363606beb1
(x_after_update_window_line): Don't run the code
Gerd Moellmann <gerd@gnu.org>
parents:
40499
diff
changeset
|
673 && (height = desired_row->visible_height, |
|
a4363606beb1
(x_after_update_window_line): Don't run the code
Gerd Moellmann <gerd@gnu.org>
parents:
40499
diff
changeset
|
674 height > 0)) |
|
a4363606beb1
(x_after_update_window_line): Don't run the code
Gerd Moellmann <gerd@gnu.org>
parents:
40499
diff
changeset
|
675 { |
|
40435
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
676 int y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, desired_row->y)); |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
677 |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
678 /* Internal border is drawn below the tool bar. */ |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
679 if (WINDOWP (f->tool_bar_window) |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
680 && w == XWINDOW (f->tool_bar_window)) |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
681 y -= width; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
682 |
|
40435
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
683 BLOCK_INPUT; |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
684 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
685 0, y, width, height, False); |
|
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
686 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
687 FRAME_PIXEL_WIDTH (f) - width, |
|
40435
b23a0899363f
(x_after_update_window_line): Clear internal border
Gerd Moellmann <gerd@gnu.org>
parents:
40433
diff
changeset
|
688 y, width, height, False); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
689 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
690 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
691 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
692 |
| 50097 | 693 static void |
| 694 x_draw_fringe_bitmap (w, row, p) | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
695 struct window *w; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
696 struct glyph_row *row; |
| 50097 | 697 struct draw_fringe_bitmap_params *p; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
698 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
699 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
700 Display *display = FRAME_X_DISPLAY (f); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
701 Window window = FRAME_X_WINDOW (f); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
702 GC gc = f->output_data.x->normal_gc; |
| 50097 | 703 struct face *face = p->face; |
|
53609
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
704 int rowY; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
705 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
706 /* Must clip because of partially visible lines. */ |
|
53609
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
707 rowY = WINDOW_TO_FRAME_PIXEL_Y (w, row->y); |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
708 if (p->y < rowY) |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
709 { |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
710 /* Adjust position of "bottom aligned" bitmap on partially |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
711 visible last row. */ |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
712 int oldY = row->y; |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
713 int oldVH = row->visible_height; |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
714 row->visible_height = p->h; |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
715 row->y -= rowY - p->y; |
|
58403
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
716 x_clip_to_row (w, row, -1, gc); |
|
53609
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
717 row->y = oldY; |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
718 row->visible_height = oldVH; |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
719 } |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
720 else |
|
58403
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
721 x_clip_to_row (w, row, -1, gc); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
722 |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
723 if (p->bx >= 0 && !p->overlay_p) |
| 50097 | 724 { |
|
41721
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
725 /* In case the same realized face is used for fringes and |
|
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
726 for something displayed in the text (e.g. face `region' on |
|
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
727 mono-displays, the fill style may have been changed to |
|
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
728 FillSolid in x_draw_glyph_string_background. */ |
|
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
729 if (face->stipple) |
|
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
730 XSetFillStyle (display, face->gc, FillOpaqueStippled); |
|
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
731 else |
|
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
732 XSetForeground (display, face->gc, face->background); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
733 |
|
41721
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
734 XFillRectangle (display, window, face->gc, |
| 50097 | 735 p->bx, p->by, p->nx, p->ny); |
| 736 | |
|
41721
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
737 if (!face->stipple) |
|
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
738 XSetForeground (display, face->gc, face->foreground); |
|
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
739 } |
|
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
740 |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
741 if (p->which) |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
742 { |
|
53933
869ca316cdda
(x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits).
Kim F. Storm <storm@cua.dk>
parents:
53888
diff
changeset
|
743 unsigned char *bits; |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
744 Pixmap pixmap, clipmask = (Pixmap) 0; |
| 50097 | 745 int depth = DefaultDepthOfScreen (FRAME_X_SCREEN (f)); |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
746 XGCValues gcv; |
| 50097 | 747 |
|
53933
869ca316cdda
(x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits).
Kim F. Storm <storm@cua.dk>
parents:
53888
diff
changeset
|
748 if (p->wd > 8) |
|
869ca316cdda
(x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits).
Kim F. Storm <storm@cua.dk>
parents:
53888
diff
changeset
|
749 bits = (unsigned char *)(p->bits + p->dh); |
|
869ca316cdda
(x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits).
Kim F. Storm <storm@cua.dk>
parents:
53888
diff
changeset
|
750 else |
|
869ca316cdda
(x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits).
Kim F. Storm <storm@cua.dk>
parents:
53888
diff
changeset
|
751 bits = (unsigned char *)p->bits + p->dh; |
|
869ca316cdda
(x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits).
Kim F. Storm <storm@cua.dk>
parents:
53888
diff
changeset
|
752 |
|
41741
c0edacaaaea8
(x_draw_fringe_bitmap): Always undo clipping.
Gerd Moellmann <gerd@gnu.org>
parents:
41721
diff
changeset
|
753 /* Draw the bitmap. I believe these small pixmaps can be cached |
|
c0edacaaaea8
(x_draw_fringe_bitmap): Always undo clipping.
Gerd Moellmann <gerd@gnu.org>
parents:
41721
diff
changeset
|
754 by the server. */ |
| 50097 | 755 pixmap = XCreatePixmapFromBitmapData (display, window, bits, p->wd, p->h, |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
756 (p->cursor_p |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
757 ? (p->overlay_p ? face->background |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
758 : f->output_data.x->cursor_pixel) |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
759 : face->foreground), |
|
41741
c0edacaaaea8
(x_draw_fringe_bitmap): Always undo clipping.
Gerd Moellmann <gerd@gnu.org>
parents:
41721
diff
changeset
|
760 face->background, depth); |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
761 |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
762 if (p->overlay_p) |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
763 { |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
764 clipmask = XCreatePixmapFromBitmapData (display, |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
765 FRAME_X_DISPLAY_INFO (f)->root_window, |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
766 bits, p->wd, p->h, |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
767 1, 0, 1); |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
768 gcv.clip_mask = clipmask; |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
769 gcv.clip_x_origin = p->x; |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
770 gcv.clip_y_origin = p->y; |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
771 XChangeGC (display, gc, GCClipMask | GCClipXOrigin | GCClipYOrigin, &gcv); |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
772 } |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
773 |
| 50097 | 774 XCopyArea (display, pixmap, window, gc, 0, 0, |
| 775 p->wd, p->h, p->x, p->y); | |
|
41741
c0edacaaaea8
(x_draw_fringe_bitmap): Always undo clipping.
Gerd Moellmann <gerd@gnu.org>
parents:
41721
diff
changeset
|
776 XFreePixmap (display, pixmap); |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
777 |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
778 if (p->overlay_p) |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
779 { |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
780 gcv.clip_mask = (Pixmap) 0; |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
781 XChangeGC (display, gc, GCClipMask, &gcv); |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
782 XFreePixmap (display, clipmask); |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
783 } |
|
41741
c0edacaaaea8
(x_draw_fringe_bitmap): Always undo clipping.
Gerd Moellmann <gerd@gnu.org>
parents:
41721
diff
changeset
|
784 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
785 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
786 XSetClipMask (display, gc, None); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
787 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
788 |
| 286 | 789 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
790 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
791 /* This is called when starting Emacs and when restarting after |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
792 suspend. When starting Emacs, no X window is mapped. And nothing |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
793 must be done to Emacs's own window if it is suspended (though that |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
794 rarely happens). */ |
| 286 | 795 |
| 21514 | 796 static void |
| 286 | 797 XTset_terminal_modes () |
| 798 { | |
| 799 } | |
| 800 | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
801 /* This is called when exiting or suspending Emacs. Exiting will make |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
802 the X-windows go away, and suspending requires no action. */ |
| 286 | 803 |
| 21514 | 804 static void |
| 286 | 805 XTreset_terminal_modes () |
| 806 { | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
807 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
808 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
809 |
| 286 | 810 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
811 /*********************************************************************** |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
812 Display Iterator |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
813 ***********************************************************************/ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
814 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
815 /* Function prototypes of this page. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
816 |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
817 static int x_encode_char P_ ((int, XChar2b *, struct font_info *, int *)); |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
818 |
|
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
819 |
|
27974
d443ad369a18
(PER_CHAR_METRIC): Removed.
Gerd Moellmann <gerd@gnu.org>
parents:
27967
diff
changeset
|
820 /* Get metrics of character CHAR2B in FONT. Value is null if CHAR2B |
|
d443ad369a18
(PER_CHAR_METRIC): Removed.
Gerd Moellmann <gerd@gnu.org>
parents:
27967
diff
changeset
|
821 is not contained in the font. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
822 |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
823 static XCharStruct * |
|
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
824 x_per_char_metric (font, char2b, font_type) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
825 XFontStruct *font; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
826 XChar2b *char2b; |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
827 int font_type; /* unused on X */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
828 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
829 /* The result metric information. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
830 XCharStruct *pcm = NULL; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
831 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
832 xassert (font && char2b); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
833 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
834 if (font->per_char != NULL) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
835 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
836 if (font->min_byte1 == 0 && font->max_byte1 == 0) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
837 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
838 /* min_char_or_byte2 specifies the linear character index |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
839 corresponding to the first element of the per_char array, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
840 max_char_or_byte2 is the index of the last character. A |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
841 character with non-zero CHAR2B->byte1 is not in the font. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
842 A character with byte2 less than min_char_or_byte2 or |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
843 greater max_char_or_byte2 is not in the font. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
844 if (char2b->byte1 == 0 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
845 && char2b->byte2 >= font->min_char_or_byte2 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
846 && char2b->byte2 <= font->max_char_or_byte2) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
847 pcm = font->per_char + char2b->byte2 - font->min_char_or_byte2; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
848 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
849 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
850 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
851 /* If either min_byte1 or max_byte1 are nonzero, both |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
852 min_char_or_byte2 and max_char_or_byte2 are less than |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
853 256, and the 2-byte character index values corresponding |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
854 to the per_char array element N (counting from 0) are: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
855 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
856 byte1 = N/D + min_byte1 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
857 byte2 = N\D + min_char_or_byte2 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
858 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
859 where: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
860 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
861 D = max_char_or_byte2 - min_char_or_byte2 + 1 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
862 / = integer division |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
863 \ = integer modulus */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
864 if (char2b->byte1 >= font->min_byte1 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
865 && char2b->byte1 <= font->max_byte1 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
866 && char2b->byte2 >= font->min_char_or_byte2 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
867 && char2b->byte2 <= font->max_char_or_byte2) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
868 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
869 pcm = (font->per_char |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
870 + ((font->max_char_or_byte2 - font->min_char_or_byte2 + 1) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
871 * (char2b->byte1 - font->min_byte1)) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
872 + (char2b->byte2 - font->min_char_or_byte2)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
873 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
874 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
875 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
876 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
877 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
878 /* If the per_char pointer is null, all glyphs between the first |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
879 and last character indexes inclusive have the same |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
880 information, as given by both min_bounds and max_bounds. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
881 if (char2b->byte2 >= font->min_char_or_byte2 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
882 && char2b->byte2 <= font->max_char_or_byte2) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
883 pcm = &font->max_bounds; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
884 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
885 |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
886 return ((pcm == NULL |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
887 || (pcm->width == 0 && (pcm->rbearing - pcm->lbearing) == 0)) |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
888 ? NULL : pcm); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
889 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
890 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
891 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
892 /* Encode CHAR2B using encoding information from FONT_INFO. CHAR2B is |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
893 the two-byte form of C. Encoding is returned in *CHAR2B. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
894 |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
895 static int |
|
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
896 x_encode_char (c, char2b, font_info, two_byte_p) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
897 int c; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
898 XChar2b *char2b; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
899 struct font_info *font_info; |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
900 int *two_byte_p; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
901 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
902 int charset = CHAR_CHARSET (c); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
903 XFontStruct *font = font_info->font; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
904 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
905 /* FONT_INFO may define a scheme by which to encode byte1 and byte2. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
906 This may be either a program in a special encoder language or a |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
907 fixed encoding. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
908 if (font_info->font_encoder) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
909 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
910 /* It's a program. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
911 struct ccl_program *ccl = font_info->font_encoder; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
912 |
|
62799
eba7c6883fe3
(x_encode_char): Call check_ccl_update in advance.
Kenichi Handa <handa@m17n.org>
parents:
62218
diff
changeset
|
913 check_ccl_update (ccl); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
914 if (CHARSET_DIMENSION (charset) == 1) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
915 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
916 ccl->reg[0] = charset; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
917 ccl->reg[1] = char2b->byte2; |
|
47699
a8e563d6dbb3
(x_encode_char): For DIM=1 charset, set ccl->reg[2] to
Kenichi Handa <handa@m17n.org>
parents:
47143
diff
changeset
|
918 ccl->reg[2] = -1; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
919 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
920 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
921 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
922 ccl->reg[0] = charset; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
923 ccl->reg[1] = char2b->byte1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
924 ccl->reg[2] = char2b->byte2; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
925 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
926 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
927 ccl_driver (ccl, NULL, NULL, 0, 0, NULL); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
928 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
929 /* We assume that MSBs are appropriately set/reset by CCL |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
930 program. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
931 if (font->max_byte1 == 0) /* 1-byte font */ |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
932 char2b->byte1 = 0, char2b->byte2 = ccl->reg[1]; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
933 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
934 char2b->byte1 = ccl->reg[1], char2b->byte2 = ccl->reg[2]; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
935 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
936 else if (font_info->encoding[charset]) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
937 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
938 /* Fixed encoding scheme. See fontset.h for the meaning of the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
939 encoding numbers. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
940 int enc = font_info->encoding[charset]; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
941 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
942 if ((enc == 1 || enc == 2) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
943 && CHARSET_DIMENSION (charset) == 2) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
944 char2b->byte1 |= 0x80; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
945 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
946 if (enc == 1 || enc == 3) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
947 char2b->byte2 |= 0x80; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
948 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
949 |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
950 if (two_byte_p) |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
951 *two_byte_p = ((XFontStruct *) (font_info->font))->max_byte1 > 0; |
|
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
952 |
|
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
953 return FONT_TYPE_UNKNOWN; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
954 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
955 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
956 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
957 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
958 /*********************************************************************** |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
959 Glyph display |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
960 ***********************************************************************/ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
961 |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
962 |
|
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
963 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
964 static void x_set_glyph_string_clipping P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
965 static void x_set_glyph_string_gc P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
966 static void x_draw_glyph_string_background P_ ((struct glyph_string *, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
967 int)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
968 static void x_draw_glyph_string_foreground P_ ((struct glyph_string *)); |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
969 static void x_draw_composite_glyph_string_foreground P_ ((struct glyph_string *)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
970 static void x_draw_glyph_string_box P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
971 static void x_draw_glyph_string P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
972 static void x_compute_glyph_string_overhangs P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
973 static void x_set_cursor_gc P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
974 static void x_set_mode_line_face_gc P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
975 static void x_set_mouse_face_gc P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
976 static int x_alloc_lighter_color P_ ((struct frame *, Display *, Colormap, |
|
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
25921
diff
changeset
|
977 unsigned long *, double, int)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
978 static void x_setup_relief_color P_ ((struct frame *, struct relief *, |
|
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
25921
diff
changeset
|
979 double, int, unsigned long)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
980 static void x_setup_relief_colors P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
981 static void x_draw_image_glyph_string P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
982 static void x_draw_image_relief P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
983 static void x_draw_image_foreground P_ ((struct glyph_string *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
984 static void x_draw_image_foreground_1 P_ ((struct glyph_string *, Pixmap)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
985 static void x_clear_glyph_string_rect P_ ((struct glyph_string *, int, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
986 int, int, int)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
987 static void x_draw_relief_rect P_ ((struct frame *, int, int, int, int, |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
988 int, int, int, int, int, int, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
989 XRectangle *)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
990 static void x_draw_box_rect P_ ((struct glyph_string *, int, int, int, int, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
991 int, int, int, XRectangle *)); |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
992 |
|
29619
d171b4754825
(x_check_font) [GLYPH_DEBUG]: Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents:
29600
diff
changeset
|
993 #if GLYPH_DEBUG |
|
d171b4754825
(x_check_font) [GLYPH_DEBUG]: Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents:
29600
diff
changeset
|
994 static void x_check_font P_ ((struct frame *, XFontStruct *)); |
|
d171b4754825
(x_check_font) [GLYPH_DEBUG]: Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents:
29600
diff
changeset
|
995 #endif |
|
d171b4754825
(x_check_font) [GLYPH_DEBUG]: Add prototype.
Gerd Moellmann <gerd@gnu.org>
parents:
29600
diff
changeset
|
996 |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
997 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
998 /* Set S->gc to a suitable GC for drawing glyph string S in cursor |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
999 face. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1000 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1001 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1002 x_set_cursor_gc (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1003 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1004 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1005 if (s->font == FRAME_FONT (s->f) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1006 && s->face->background == FRAME_BACKGROUND_PIXEL (s->f) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1007 && s->face->foreground == FRAME_FOREGROUND_PIXEL (s->f) |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1008 && !s->cmp) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1009 s->gc = s->f->output_data.x->cursor_gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1010 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1011 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1012 /* Cursor on non-default face: must merge. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1013 XGCValues xgcv; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1014 unsigned long mask; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1015 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1016 xgcv.background = s->f->output_data.x->cursor_pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1017 xgcv.foreground = s->face->background; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1018 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1019 /* If the glyph would be invisible, try a different foreground. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1020 if (xgcv.foreground == xgcv.background) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1021 xgcv.foreground = s->face->foreground; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1022 if (xgcv.foreground == xgcv.background) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1023 xgcv.foreground = s->f->output_data.x->cursor_foreground_pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1024 if (xgcv.foreground == xgcv.background) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1025 xgcv.foreground = s->face->foreground; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1026 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1027 /* Make sure the cursor is distinct from text in this face. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1028 if (xgcv.background == s->face->background |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1029 && xgcv.foreground == s->face->foreground) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1030 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1031 xgcv.background = s->face->foreground; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1032 xgcv.foreground = s->face->background; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1033 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1034 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1035 IF_DEBUG (x_check_font (s->f, s->font)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1036 xgcv.font = s->font->fid; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1037 xgcv.graphics_exposures = False; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1038 mask = GCForeground | GCBackground | GCFont | GCGraphicsExposures; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1039 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1040 if (FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1041 XChangeGC (s->display, FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1042 mask, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1043 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1044 FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1045 = XCreateGC (s->display, s->window, mask, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1046 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1047 s->gc = FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1048 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1049 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1050 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1051 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1052 /* Set up S->gc of glyph string S for drawing text in mouse face. */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1053 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1054 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1055 x_set_mouse_face_gc (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1056 struct glyph_string *s; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1057 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1058 int face_id; |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
1059 struct face *face; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1060 |
|
35315
1f5511b1d5ea
(x_set_mouse_face_gc): If the last use mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
35309
diff
changeset
|
1061 /* What face has to be used last for the mouse face? */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1062 face_id = FRAME_X_DISPLAY_INFO (s->f)->mouse_face_face_id; |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
1063 face = FACE_FROM_ID (s->f, face_id); |
|
35315
1f5511b1d5ea
(x_set_mouse_face_gc): If the last use mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
35309
diff
changeset
|
1064 if (face == NULL) |
|
1f5511b1d5ea
(x_set_mouse_face_gc): If the last use mouse face
Gerd Moellmann <gerd@gnu.org>
parents:
35309
diff
changeset
|
1065 face = FACE_FROM_ID (s->f, MOUSE_FACE_ID); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1066 |
|
29393
3ad9354ade23
(x_set_mouse_face_gc): If first glyph isn't a character
Gerd Moellmann <gerd@gnu.org>
parents:
28793
diff
changeset
|
1067 if (s->first_glyph->type == CHAR_GLYPH) |
|
3ad9354ade23
(x_set_mouse_face_gc): If first glyph isn't a character
Gerd Moellmann <gerd@gnu.org>
parents:
28793
diff
changeset
|
1068 face_id = FACE_FOR_CHAR (s->f, face, s->first_glyph->u.ch); |
|
3ad9354ade23
(x_set_mouse_face_gc): If first glyph isn't a character
Gerd Moellmann <gerd@gnu.org>
parents:
28793
diff
changeset
|
1069 else |
|
3ad9354ade23
(x_set_mouse_face_gc): If first glyph isn't a character
Gerd Moellmann <gerd@gnu.org>
parents:
28793
diff
changeset
|
1070 face_id = FACE_FOR_CHAR (s->f, face, 0); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1071 s->face = FACE_FROM_ID (s->f, face_id); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1072 PREPARE_FACE_FOR_DISPLAY (s->f, s->face); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1073 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1074 /* If font in this face is same as S->font, use it. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1075 if (s->font == s->face->font) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1076 s->gc = s->face->gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1077 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1078 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1079 /* Otherwise construct scratch_cursor_gc with values from FACE |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1080 but font FONT. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1081 XGCValues xgcv; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1082 unsigned long mask; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1083 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1084 xgcv.background = s->face->background; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1085 xgcv.foreground = s->face->foreground; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1086 IF_DEBUG (x_check_font (s->f, s->font)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1087 xgcv.font = s->font->fid; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1088 xgcv.graphics_exposures = False; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1089 mask = GCForeground | GCBackground | GCFont | GCGraphicsExposures; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1090 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1091 if (FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1092 XChangeGC (s->display, FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1093 mask, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1094 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1095 FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1096 = XCreateGC (s->display, s->window, mask, &xgcv); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1097 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1098 s->gc = FRAME_X_DISPLAY_INFO (s->f)->scratch_cursor_gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1099 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1100 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1101 xassert (s->gc != 0); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1102 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1103 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1104 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1105 /* Set S->gc of glyph string S to a GC suitable for drawing a mode line. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1106 Faces to use in the mode line have already been computed when the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1107 matrix was built, so there isn't much to do, here. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1108 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1109 static INLINE void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1110 x_set_mode_line_face_gc (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1111 struct glyph_string *s; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1112 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1113 s->gc = s->face->gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1114 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1115 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1116 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1117 /* Set S->gc of glyph string S for drawing that glyph string. Set |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1118 S->stippled_p to a non-zero value if the face of S has a stipple |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1119 pattern. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1120 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1121 static INLINE void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1122 x_set_glyph_string_gc (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1123 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1124 { |
|
30137
4a3808257cf4
(x_fill_stretch_glyph_string): Consume runs of stretch
Gerd Moellmann <gerd@gnu.org>
parents:
30083
diff
changeset
|
1125 PREPARE_FACE_FOR_DISPLAY (s->f, s->face); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1126 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1127 if (s->hl == DRAW_NORMAL_TEXT) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1128 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1129 s->gc = s->face->gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1130 s->stippled_p = s->face->stipple != 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1131 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1132 else if (s->hl == DRAW_INVERSE_VIDEO) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1133 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1134 x_set_mode_line_face_gc (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1135 s->stippled_p = s->face->stipple != 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1136 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1137 else if (s->hl == DRAW_CURSOR) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1138 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1139 x_set_cursor_gc (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1140 s->stippled_p = 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1141 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1142 else if (s->hl == DRAW_MOUSE_FACE) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1143 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1144 x_set_mouse_face_gc (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1145 s->stippled_p = s->face->stipple != 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1146 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1147 else if (s->hl == DRAW_IMAGE_RAISED |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1148 || s->hl == DRAW_IMAGE_SUNKEN) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1149 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1150 s->gc = s->face->gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1151 s->stippled_p = s->face->stipple != 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1152 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1153 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1154 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1155 s->gc = s->face->gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1156 s->stippled_p = s->face->stipple != 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1157 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1158 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1159 /* GC must have been set. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1160 xassert (s->gc != 0); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1161 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1162 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1163 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1164 /* Set clipping for output of glyph string S. S may be part of a mode |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1165 line or menu if we don't have X toolkit support. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1166 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1167 static INLINE void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1168 x_set_glyph_string_clipping (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1169 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1170 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1171 XRectangle r; |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
1172 get_glyph_string_clip_rect (s, &r); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1173 XSetClipRectangles (s->display, s->gc, 0, 0, &r, 1, Unsorted); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1174 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1175 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1176 |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
1177 /* RIF: |
|
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
1178 Compute left and right overhang of glyph string S. If S is a glyph |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1179 string for a composition, assume overhangs don't exist. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1180 |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
1181 static void |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1182 x_compute_glyph_string_overhangs (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1183 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1184 { |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1185 if (s->cmp == NULL |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1186 && s->first_glyph->type == CHAR_GLYPH) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1187 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1188 XCharStruct cs; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1189 int direction, font_ascent, font_descent; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1190 XTextExtents16 (s->font, s->char2b, s->nchars, &direction, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1191 &font_ascent, &font_descent, &cs); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1192 s->right_overhang = cs.rbearing > cs.width ? cs.rbearing - cs.width : 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1193 s->left_overhang = cs.lbearing < 0 ? -cs.lbearing : 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1194 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1195 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1196 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1197 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1198 /* Fill rectangle X, Y, W, H with background color of glyph string S. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1199 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1200 static INLINE void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1201 x_clear_glyph_string_rect (s, x, y, w, h) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1202 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1203 int x, y, w, h; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1204 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1205 XGCValues xgcv; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1206 XGetGCValues (s->display, s->gc, GCForeground | GCBackground, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1207 XSetForeground (s->display, s->gc, xgcv.background); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1208 XFillRectangle (s->display, s->window, s->gc, x, y, w, h); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1209 XSetForeground (s->display, s->gc, xgcv.foreground); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1210 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1211 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1212 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1213 /* Draw the background of glyph_string S. If S->background_filled_p |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1214 is non-zero don't draw it. FORCE_P non-zero means draw the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1215 background even if it wouldn't be drawn normally. This is used |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1216 when a string preceding S draws into the background of S, or S |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1217 contains the first component of a composition. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1218 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1219 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1220 x_draw_glyph_string_background (s, force_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1221 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1222 int force_p; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1223 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1224 /* Nothing to do if background has already been drawn or if it |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1225 shouldn't be drawn in the first place. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1226 if (!s->background_filled_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1227 { |
|
36005
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
1228 int box_line_width = max (s->face->box_line_width, 0); |
|
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
1229 |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1230 if (s->stippled_p) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1231 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1232 /* Fill background with a stipple pattern. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1233 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1234 XFillRectangle (s->display, s->window, s->gc, s->x, |
|
36005
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
1235 s->y + box_line_width, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1236 s->background_width, |
|
36005
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
1237 s->height - 2 * box_line_width); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1238 XSetFillStyle (s->display, s->gc, FillSolid); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1239 s->background_filled_p = 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1240 } |
|
36005
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
1241 else if (FONT_HEIGHT (s->font) < s->height - 2 * box_line_width |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1242 || s->font_not_found_p |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1243 || s->extends_to_end_of_line_p |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1244 || force_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1245 { |
|
36005
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
1246 x_clear_glyph_string_rect (s, s->x, s->y + box_line_width, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1247 s->background_width, |
|
36005
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
1248 s->height - 2 * box_line_width); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1249 s->background_filled_p = 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1250 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1251 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1252 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1253 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1254 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1255 /* Draw the foreground of glyph string S. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1256 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1257 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1258 x_draw_glyph_string_foreground (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1259 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1260 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1261 int i, x; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1262 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1263 /* If first glyph of S has a left box line, start drawing the text |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1264 of S to the right of that box line. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1265 if (s->face->box != FACE_NO_BOX |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1266 && s->first_glyph->left_box_line_p) |
|
36005
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
1267 x = s->x + abs (s->face->box_line_width); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1268 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1269 x = s->x; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1270 |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1271 /* Draw characters of S as rectangles if S's font could not be |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1272 loaded. */ |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1273 if (s->font_not_found_p) |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1274 { |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1275 for (i = 0; i < s->nchars; ++i) |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1276 { |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1277 struct glyph *g = s->first_glyph + i; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1278 XDrawRectangle (s->display, s->window, |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1279 s->gc, x, s->y, g->pixel_width - 1, |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1280 s->height - 1); |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1281 x += g->pixel_width; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1282 } |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1283 } |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1284 else |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1285 { |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1286 char *char1b = (char *) s->char2b; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1287 int boff = s->font_info->baseline_offset; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1288 |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1289 if (s->font_info->vertical_centering) |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1290 boff = VCENTER_BASELINE_OFFSET (s->font, s->f) - boff; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1291 |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1292 /* If we can use 8-bit functions, condense S->char2b. */ |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1293 if (!s->two_byte_p) |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1294 for (i = 0; i < s->nchars; ++i) |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1295 char1b[i] = s->char2b[i].byte2; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1296 |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1297 /* Draw text with XDrawString if background has already been |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1298 filled. Otherwise, use XDrawImageString. (Note that |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1299 XDrawImageString is usually faster than XDrawString.) Always |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1300 use XDrawImageString when drawing the cursor so that there is |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1301 no chance that characters under a box cursor are invisible. */ |
|
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65764
diff
changeset
|
1302 if (s->for_overlaps |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1303 || (s->background_filled_p && s->hl != DRAW_CURSOR)) |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1304 { |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1305 /* Draw characters with 16-bit or 8-bit functions. */ |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1306 if (s->two_byte_p) |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1307 XDrawString16 (s->display, s->window, s->gc, x, |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1308 s->ybase - boff, s->char2b, s->nchars); |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1309 else |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1310 XDrawString (s->display, s->window, s->gc, x, |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1311 s->ybase - boff, char1b, s->nchars); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1312 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1313 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1314 { |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1315 if (s->two_byte_p) |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1316 XDrawImageString16 (s->display, s->window, s->gc, x, |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1317 s->ybase - boff, s->char2b, s->nchars); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
1318 else |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1319 XDrawImageString (s->display, s->window, s->gc, x, |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1320 s->ybase - boff, char1b, s->nchars); |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1321 } |
|
48383
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1322 |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1323 if (s->face->overstrike) |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1324 { |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1325 /* For overstriking (to simulate bold-face), draw the |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1326 characters again shifted to the right by one pixel. */ |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1327 if (s->two_byte_p) |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1328 XDrawString16 (s->display, s->window, s->gc, x + 1, |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1329 s->ybase - boff, s->char2b, s->nchars); |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1330 else |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1331 XDrawString (s->display, s->window, s->gc, x + 1, |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1332 s->ybase - boff, char1b, s->nchars); |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1333 } |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1334 } |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1335 } |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1336 |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1337 /* Draw the foreground of composite glyph string S. */ |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1338 |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1339 static void |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1340 x_draw_composite_glyph_string_foreground (s) |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1341 struct glyph_string *s; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1342 { |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1343 int i, x; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1344 |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1345 /* If first glyph of S has a left box line, start drawing the text |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1346 of S to the right of that box line. */ |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1347 if (s->face->box != FACE_NO_BOX |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1348 && s->first_glyph->left_box_line_p) |
|
36005
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
1349 x = s->x + abs (s->face->box_line_width); |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1350 else |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1351 x = s->x; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1352 |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1353 /* S is a glyph string for a composition. S->gidx is the index of |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1354 the first character drawn for glyphs of this composition. |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1355 S->gidx == 0 means we are drawing the very first character of |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1356 this composition. */ |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1357 |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1358 /* Draw a rectangle for the composition if the font for the very |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1359 first character of the composition could not be loaded. */ |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1360 if (s->font_not_found_p) |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1361 { |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1362 if (s->gidx == 0) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1363 XDrawRectangle (s->display, s->window, s->gc, x, s->y, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1364 s->width - 1, s->height - 1); |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1365 } |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1366 else |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1367 { |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
1368 for (i = 0; i < s->nchars; i++, ++s->gidx) |
|
48383
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1369 { |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1370 XDrawString16 (s->display, s->window, s->gc, |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1371 x + s->cmp->offsets[s->gidx * 2], |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1372 s->ybase - s->cmp->offsets[s->gidx * 2 + 1], |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1373 s->char2b + i, 1); |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1374 if (s->face->overstrike) |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1375 XDrawString16 (s->display, s->window, s->gc, |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1376 x + s->cmp->offsets[s->gidx * 2] + 1, |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1377 s->ybase - s->cmp->offsets[s->gidx * 2 + 1], |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1378 s->char2b + i, 1); |
|
c44793510100
(x_draw_glyph_string_foreground)
Miles Bader <miles@gnu.org>
parents:
48330
diff
changeset
|
1379 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1380 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1381 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1382 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1383 |
|
25529
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1384 #ifdef USE_X_TOOLKIT |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1385 |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1386 static struct frame *x_frame_of_widget P_ ((Widget)); |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1387 static Boolean cvt_string_to_pixel P_ ((Display *, XrmValue *, Cardinal *, |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1388 XrmValue *, XrmValue *, XtPointer *)); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1389 static void cvt_pixel_dtor P_ ((XtAppContext, XrmValue *, XtPointer, |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1390 XrmValue *, Cardinal *)); |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1391 |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1392 |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1393 /* Return the frame on which widget WIDGET is used.. Abort if frame |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1394 cannot be determined. */ |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1395 |
|
29749
4235764941b5
(x_frame_of_widget): Add `static' to declaration (for pcc).
Dave Love <fx@gnu.org>
parents:
29744
diff
changeset
|
1396 static struct frame * |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1397 x_frame_of_widget (widget) |
|
25529
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1398 Widget widget; |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1399 { |
|
25529
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1400 struct x_display_info *dpyinfo; |
|
25716
e2d5cd96727b
(x_scroll_bar_handle_click): Compile only if
Gerd Moellmann <gerd@gnu.org>
parents:
25692
diff
changeset
|
1401 Lisp_Object tail; |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1402 struct frame *f; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1403 |
|
25529
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1404 dpyinfo = x_display_info_for_display (XtDisplay (widget)); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1405 |
|
25529
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1406 /* Find the top-level shell of the widget. Note that this function |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1407 can be called when the widget is not yet realized, so XtWindow |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1408 (widget) == 0. That's the reason we can't simply use |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1409 x_any_window_to_frame. */ |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1410 while (!XtIsTopLevelShell (widget)) |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1411 widget = XtParent (widget); |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1412 |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1413 /* Look for a frame with that top-level widget. Allocate the color |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1414 on that frame to get the right gamma correction value. */ |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1415 for (tail = Vframe_list; GC_CONSP (tail); tail = XCDR (tail)) |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1416 if (GC_FRAMEP (XCAR (tail)) |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1417 && (f = XFRAME (XCAR (tail)), |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1418 (f->output_data.nothing != 1 |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1419 && FRAME_X_DISPLAY_INFO (f) == dpyinfo)) |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1420 && f->output_data.x->widget == widget) |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1421 return f; |
|
25529
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1422 |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1423 abort (); |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1424 } |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1425 |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1426 |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1427 /* Allocate the color COLOR->pixel on the screen and display of |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1428 widget WIDGET in colormap CMAP. If an exact match cannot be |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1429 allocated, try the nearest color available. Value is non-zero |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1430 if successful. This is called from lwlib. */ |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1431 |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1432 int |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1433 x_alloc_nearest_color_for_widget (widget, cmap, color) |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1434 Widget widget; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1435 Colormap cmap; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1436 XColor *color; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1437 { |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1438 struct frame *f = x_frame_of_widget (widget); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1439 return x_alloc_nearest_color (f, cmap, color); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1440 } |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1441 |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1442 |
|
31340
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1443 /* Allocate a color which is lighter or darker than *PIXEL by FACTOR |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1444 or DELTA. Try a color with RGB values multiplied by FACTOR first. |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1445 If this produces the same color as PIXEL, try a color where all RGB |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1446 values have DELTA added. Return the allocated color in *PIXEL. |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1447 DISPLAY is the X display, CMAP is the colormap to operate on. |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1448 Value is non-zero if successful. */ |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1449 |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1450 int |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1451 x_alloc_lighter_color_for_widget (widget, display, cmap, pixel, factor, delta) |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1452 Widget widget; |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1453 Display *display; |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1454 Colormap cmap; |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1455 unsigned long *pixel; |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1456 double factor; |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1457 int delta; |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1458 { |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1459 struct frame *f = x_frame_of_widget (widget); |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1460 return x_alloc_lighter_color (f, display, cmap, pixel, factor, delta); |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1461 } |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1462 |
|
6b2ed557e09c
(x_alloc_lighter_color_for_widget): New function.
Miles Bader <miles@gnu.org>
parents:
31011
diff
changeset
|
1463 |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1464 /* Structure specifying which arguments should be passed by Xt to |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1465 cvt_string_to_pixel. We want the widget's screen and colormap. */ |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1466 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1467 static XtConvertArgRec cvt_string_to_pixel_args[] = |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1468 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1469 {XtWidgetBaseOffset, (XtPointer) XtOffset (Widget, core.screen), |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1470 sizeof (Screen *)}, |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1471 {XtWidgetBaseOffset, (XtPointer) XtOffset (Widget, core.colormap), |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1472 sizeof (Colormap)} |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1473 }; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1474 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1475 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1476 /* The address of this variable is returned by |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1477 cvt_string_to_pixel. */ |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1478 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1479 static Pixel cvt_string_to_pixel_value; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1480 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1481 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1482 /* Convert a color name to a pixel color. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1483 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1484 DPY is the display we are working on. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1485 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1486 ARGS is an array of *NARGS XrmValue structures holding additional |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1487 information about the widget for which the conversion takes place. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1488 The contents of this array are determined by the specification |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1489 in cvt_string_to_pixel_args. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1490 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1491 FROM is a pointer to an XrmValue which points to the color name to |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1492 convert. TO is an XrmValue in which to return the pixel color. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1493 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1494 CLOSURE_RET is a pointer to user-data, in which we record if |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1495 we allocated the color or not. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1496 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1497 Value is True if successful, False otherwise. */ |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1498 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1499 static Boolean |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1500 cvt_string_to_pixel (dpy, args, nargs, from, to, closure_ret) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1501 Display *dpy; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1502 XrmValue *args; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1503 Cardinal *nargs; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1504 XrmValue *from, *to; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1505 XtPointer *closure_ret; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1506 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1507 Screen *screen; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1508 Colormap cmap; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1509 Pixel pixel; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1510 String color_name; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1511 XColor color; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1512 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1513 if (*nargs != 2) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1514 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1515 XtAppWarningMsg (XtDisplayToApplicationContext (dpy), |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1516 "wrongParameters", "cvt_string_to_pixel", |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1517 "XtToolkitError", |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1518 "Screen and colormap args required", NULL, NULL); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1519 return False; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1520 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1521 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1522 screen = *(Screen **) args[0].addr; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1523 cmap = *(Colormap *) args[1].addr; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1524 color_name = (String) from->addr; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1525 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1526 if (strcmp (color_name, XtDefaultBackground) == 0) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1527 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1528 *closure_ret = (XtPointer) False; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1529 pixel = WhitePixelOfScreen (screen); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1530 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1531 else if (strcmp (color_name, XtDefaultForeground) == 0) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1532 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1533 *closure_ret = (XtPointer) False; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1534 pixel = BlackPixelOfScreen (screen); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1535 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1536 else if (XParseColor (dpy, cmap, color_name, &color) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1537 && x_alloc_nearest_color_1 (dpy, cmap, &color)) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1538 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1539 pixel = color.pixel; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1540 *closure_ret = (XtPointer) True; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1541 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1542 else |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1543 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1544 String params[1]; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1545 Cardinal nparams = 1; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1546 |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1547 params[0] = color_name; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1548 XtAppWarningMsg (XtDisplayToApplicationContext (dpy), |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1549 "badValue", "cvt_string_to_pixel", |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1550 "XtToolkitError", "Invalid color `%s'", |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1551 params, &nparams); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1552 return False; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1553 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1554 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1555 if (to->addr != NULL) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1556 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1557 if (to->size < sizeof (Pixel)) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1558 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1559 to->size = sizeof (Pixel); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1560 return False; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1561 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1562 |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1563 *(Pixel *) to->addr = pixel; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1564 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1565 else |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1566 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1567 cvt_string_to_pixel_value = pixel; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1568 to->addr = (XtPointer) &cvt_string_to_pixel_value; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1569 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1570 |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1571 to->size = sizeof (Pixel); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1572 return True; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1573 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1574 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1575 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1576 /* Free a pixel color which was previously allocated via |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1577 cvt_string_to_pixel. This is registered as the destructor |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1578 for this type of resource via XtSetTypeConverter. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1579 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1580 APP is the application context in which we work. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1581 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1582 TO is a pointer to an XrmValue holding the color to free. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1583 CLOSURE is the value we stored in CLOSURE_RET for this color |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1584 in cvt_string_to_pixel. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1585 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1586 ARGS and NARGS are like for cvt_string_to_pixel. */ |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1587 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1588 static void |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1589 cvt_pixel_dtor (app, to, closure, args, nargs) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1590 XtAppContext app; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1591 XrmValuePtr to; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1592 XtPointer closure; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1593 XrmValuePtr args; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1594 Cardinal *nargs; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1595 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1596 if (*nargs != 2) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1597 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1598 XtAppWarningMsg (app, "wrongParameters", "cvt_pixel_dtor", |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1599 "XtToolkitError", |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1600 "Screen and colormap arguments required", |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1601 NULL, NULL); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1602 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1603 else if (closure != NULL) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1604 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1605 /* We did allocate the pixel, so free it. */ |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1606 Screen *screen = *(Screen **) args[0].addr; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1607 Colormap cmap = *(Colormap *) args[1].addr; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1608 x_free_dpy_colors (DisplayOfScreen (screen), screen, cmap, |
|
38255
9ec233999747
* xterm.c (cvt_pixel_dtor): Call x_free_dpy_colors with the
Gerd Moellmann <gerd@gnu.org>
parents:
38246
diff
changeset
|
1609 (Pixel *) to->addr, 1); |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1610 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1611 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1612 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1613 |
|
25529
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1614 #endif /* USE_X_TOOLKIT */ |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1615 |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1616 |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1617 /* Value is an array of XColor structures for the contents of the |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1618 color map of display DPY. Set *NCELLS to the size of the array. |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1619 Note that this probably shouldn't be called for large color maps, |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1620 say a 24-bit TrueColor map. */ |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1621 |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1622 static const XColor * |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1623 x_color_cells (dpy, ncells) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1624 Display *dpy; |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1625 int *ncells; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1626 { |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1627 struct x_display_info *dpyinfo = x_display_info_for_display (dpy); |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1628 |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1629 if (dpyinfo->color_cells == NULL) |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1630 { |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1631 Screen *screen = dpyinfo->screen; |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1632 int i; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1633 |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1634 dpyinfo->ncolor_cells |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1635 = XDisplayCells (dpy, XScreenNumberOfScreen (screen)); |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1636 dpyinfo->color_cells |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1637 = (XColor *) xmalloc (dpyinfo->ncolor_cells |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1638 * sizeof *dpyinfo->color_cells); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1639 |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1640 for (i = 0; i < dpyinfo->ncolor_cells; ++i) |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1641 dpyinfo->color_cells[i].pixel = i; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1642 |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1643 XQueryColors (dpy, dpyinfo->cmap, |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1644 dpyinfo->color_cells, dpyinfo->ncolor_cells); |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1645 } |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1646 |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1647 *ncells = dpyinfo->ncolor_cells; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1648 return dpyinfo->color_cells; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1649 } |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1650 |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1651 |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1652 /* On frame F, translate pixel colors to RGB values for the NCOLORS |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1653 colors in COLORS. Use cached information, if available. */ |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1654 |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1655 void |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1656 x_query_colors (f, colors, ncolors) |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1657 struct frame *f; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1658 XColor *colors; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1659 int ncolors; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1660 { |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1661 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1662 |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1663 if (dpyinfo->color_cells) |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1664 { |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1665 int i; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1666 for (i = 0; i < ncolors; ++i) |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1667 { |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1668 unsigned long pixel = colors[i].pixel; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1669 xassert (pixel < dpyinfo->ncolor_cells); |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1670 xassert (dpyinfo->color_cells[pixel].pixel == pixel); |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1671 colors[i] = dpyinfo->color_cells[pixel]; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1672 } |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1673 } |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1674 else |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1675 XQueryColors (FRAME_X_DISPLAY (f), FRAME_X_COLORMAP (f), colors, ncolors); |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1676 } |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1677 |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1678 |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1679 /* On frame F, translate pixel color to RGB values for the color in |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1680 COLOR. Use cached information, if available. */ |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1681 |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1682 void |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1683 x_query_color (f, color) |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1684 struct frame *f; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1685 XColor *color; |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1686 { |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1687 x_query_colors (f, color, 1); |
|
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1688 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1689 |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1690 |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1691 /* Allocate the color COLOR->pixel on DISPLAY, colormap CMAP. If an |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1692 exact match can't be allocated, try the nearest color available. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1693 Value is non-zero if successful. Set *COLOR to the color |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1694 allocated. */ |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1695 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1696 static int |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1697 x_alloc_nearest_color_1 (dpy, cmap, color) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1698 Display *dpy; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1699 Colormap cmap; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1700 XColor *color; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1701 { |
|
25529
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1702 int rc; |
|
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1703 |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1704 rc = XAllocColor (dpy, cmap, color); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1705 if (rc == 0) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1706 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1707 /* If we got to this point, the colormap is full, so we're going |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1708 to try to get the next closest color. The algorithm used is |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1709 a least-squares matching, which is what X uses for closest |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1710 color matching with StaticColor visuals. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1711 int nearest, i; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1712 unsigned long nearest_delta = ~0; |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1713 int ncells; |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1714 const XColor *cells = x_color_cells (dpy, &ncells); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1715 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1716 for (nearest = i = 0; i < ncells; ++i) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1717 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1718 long dred = (color->red >> 8) - (cells[i].red >> 8); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1719 long dgreen = (color->green >> 8) - (cells[i].green >> 8); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1720 long dblue = (color->blue >> 8) - (cells[i].blue >> 8); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1721 unsigned long delta = dred * dred + dgreen * dgreen + dblue * dblue; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1722 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1723 if (delta < nearest_delta) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1724 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1725 nearest = i; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1726 nearest_delta = delta; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1727 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1728 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1729 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1730 color->red = cells[nearest].red; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1731 color->green = cells[nearest].green; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1732 color->blue = cells[nearest].blue; |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1733 rc = XAllocColor (dpy, cmap, color); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1734 } |
|
33062
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1735 else |
|
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1736 { |
|
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1737 /* If allocation succeeded, and the allocated pixel color is not |
|
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1738 equal to a cached pixel color recorded earlier, there was a |
|
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1739 change in the colormap, so clear the color cache. */ |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1740 struct x_display_info *dpyinfo = x_display_info_for_display (dpy); |
|
33062
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1741 XColor *cached_color; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1742 |
|
33062
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1743 if (dpyinfo->color_cells |
|
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1744 && (cached_color = &dpyinfo->color_cells[color->pixel], |
|
33064
9de33d895c6c
(x_alloc_nearest_color): Fix last change to compare
Gerd Moellmann <gerd@gnu.org>
parents:
33062
diff
changeset
|
1745 (cached_color->red != color->red |
|
9de33d895c6c
(x_alloc_nearest_color): Fix last change to compare
Gerd Moellmann <gerd@gnu.org>
parents:
33062
diff
changeset
|
1746 || cached_color->blue != color->blue |
|
9de33d895c6c
(x_alloc_nearest_color): Fix last change to compare
Gerd Moellmann <gerd@gnu.org>
parents:
33062
diff
changeset
|
1747 || cached_color->green != color->green))) |
|
33062
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1748 { |
|
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1749 xfree (dpyinfo->color_cells); |
|
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1750 dpyinfo->color_cells = NULL; |
|
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1751 dpyinfo->ncolor_cells = 0; |
|
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1752 } |
|
c236bd0d44c3
(x_alloc_nearest_color): If allocation succeeds, and
Gerd Moellmann <gerd@gnu.org>
parents:
32988
diff
changeset
|
1753 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1754 |
|
28356
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1755 #ifdef DEBUG_X_COLORS |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1756 if (rc) |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1757 register_color (color->pixel); |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1758 #endif /* DEBUG_X_COLORS */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1759 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1760 return rc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1761 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1762 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1763 |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1764 /* Allocate the color COLOR->pixel on frame F, colormap CMAP. If an |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1765 exact match can't be allocated, try the nearest color available. |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1766 Value is non-zero if successful. Set *COLOR to the color |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1767 allocated. */ |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1768 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1769 int |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1770 x_alloc_nearest_color (f, cmap, color) |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1771 struct frame *f; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1772 Colormap cmap; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1773 XColor *color; |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1774 { |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1775 gamma_correct (f, color); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1776 return x_alloc_nearest_color_1 (FRAME_X_DISPLAY (f), cmap, color); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1777 } |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1778 |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
1779 |
|
28356
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1780 /* Allocate color PIXEL on frame F. PIXEL must already be allocated. |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1781 It's necessary to do this instead of just using PIXEL directly to |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1782 get color reference counts right. */ |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1783 |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1784 unsigned long |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1785 x_copy_color (f, pixel) |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1786 struct frame *f; |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1787 unsigned long pixel; |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1788 { |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1789 XColor color; |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1790 |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1791 color.pixel = pixel; |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1792 BLOCK_INPUT; |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1793 x_query_color (f, &color); |
|
28356
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1794 XAllocColor (FRAME_X_DISPLAY (f), FRAME_X_COLORMAP (f), &color); |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1795 UNBLOCK_INPUT; |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1796 #ifdef DEBUG_X_COLORS |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1797 register_color (pixel); |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1798 #endif |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1799 return color.pixel; |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1800 } |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1801 |
|
c94ec7e56746
(x_copy_color): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28321
diff
changeset
|
1802 |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1803 /* Allocate color PIXEL on display DPY. PIXEL must already be allocated. |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1804 It's necessary to do this instead of just using PIXEL directly to |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1805 get color reference counts right. */ |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1806 |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1807 unsigned long |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1808 x_copy_dpy_color (dpy, cmap, pixel) |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1809 Display *dpy; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1810 Colormap cmap; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1811 unsigned long pixel; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1812 { |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1813 XColor color; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1814 |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1815 color.pixel = pixel; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1816 BLOCK_INPUT; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1817 XQueryColor (dpy, cmap, &color); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1818 XAllocColor (dpy, cmap, &color); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1819 UNBLOCK_INPUT; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1820 #ifdef DEBUG_X_COLORS |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1821 register_color (pixel); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1822 #endif |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1823 return color.pixel; |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1824 } |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1825 |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
1826 |
|
33456
d8d4ecfa24fd
(x_alloc_lighter_color): Use real brightness calculation.
Miles Bader <miles@gnu.org>
parents:
33449
diff
changeset
|
1827 /* Brightness beyond which a color won't have its highlight brightness |
|
d8d4ecfa24fd
(x_alloc_lighter_color): Use real brightness calculation.
Miles Bader <miles@gnu.org>
parents:
33449
diff
changeset
|
1828 boosted. |
|
d8d4ecfa24fd
(x_alloc_lighter_color): Use real brightness calculation.
Miles Bader <miles@gnu.org>
parents:
33449
diff
changeset
|
1829 |
|
33449
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1830 Nominally, highlight colors for `3d' faces are calculated by |
|
33456
d8d4ecfa24fd
(x_alloc_lighter_color): Use real brightness calculation.
Miles Bader <miles@gnu.org>
parents:
33449
diff
changeset
|
1831 brightening an object's color by a constant scale factor, but this |
|
d8d4ecfa24fd
(x_alloc_lighter_color): Use real brightness calculation.
Miles Bader <miles@gnu.org>
parents:
33449
diff
changeset
|
1832 doesn't yield good results for dark colors, so for colors who's |
|
d8d4ecfa24fd
(x_alloc_lighter_color): Use real brightness calculation.
Miles Bader <miles@gnu.org>
parents:
33449
diff
changeset
|
1833 brightness is less than this value (on a scale of 0-65535) have an |
|
d8d4ecfa24fd
(x_alloc_lighter_color): Use real brightness calculation.
Miles Bader <miles@gnu.org>
parents:
33449
diff
changeset
|
1834 use an additional additive factor. |
|
33449
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1835 |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1836 The value here is set so that the default menu-bar/mode-line color |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1837 (grey75) will not have its highlights changed at all. */ |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1838 #define HIGHLIGHT_COLOR_DARK_BOOST_LIMIT 48000 |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1839 |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1840 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1841 /* Allocate a color which is lighter or darker than *PIXEL by FACTOR |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1842 or DELTA. Try a color with RGB values multiplied by FACTOR first. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1843 If this produces the same color as PIXEL, try a color where all RGB |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1844 values have DELTA added. Return the allocated color in *PIXEL. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1845 DISPLAY is the X display, CMAP is the colormap to operate on. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1846 Value is non-zero if successful. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1847 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1848 static int |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1849 x_alloc_lighter_color (f, display, cmap, pixel, factor, delta) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1850 struct frame *f; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1851 Display *display; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1852 Colormap cmap; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1853 unsigned long *pixel; |
|
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
25921
diff
changeset
|
1854 double factor; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1855 int delta; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1856 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1857 XColor color, new; |
|
33449
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1858 long bright; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1859 int success_p; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1860 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1861 /* Get RGB color values. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1862 color.pixel = *pixel; |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
1863 x_query_color (f, &color); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1864 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1865 /* Change RGB values by specified FACTOR. Avoid overflow! */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1866 xassert (factor >= 0); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1867 new.red = min (0xffff, factor * color.red); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1868 new.green = min (0xffff, factor * color.green); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1869 new.blue = min (0xffff, factor * color.blue); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1870 |
|
33456
d8d4ecfa24fd
(x_alloc_lighter_color): Use real brightness calculation.
Miles Bader <miles@gnu.org>
parents:
33449
diff
changeset
|
1871 /* Calculate brightness of COLOR. */ |
|
d8d4ecfa24fd
(x_alloc_lighter_color): Use real brightness calculation.
Miles Bader <miles@gnu.org>
parents:
33449
diff
changeset
|
1872 bright = (2 * color.red + 3 * color.green + color.blue) / 6; |
|
33449
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1873 |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1874 /* We only boost colors that are darker than |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1875 HIGHLIGHT_COLOR_DARK_BOOST_LIMIT. */ |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1876 if (bright < HIGHLIGHT_COLOR_DARK_BOOST_LIMIT) |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1877 /* Make an additive adjustment to NEW, because it's dark enough so |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1878 that scaling by FACTOR alone isn't enough. */ |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1879 { |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1880 /* How far below the limit this color is (0 - 1, 1 being darker). */ |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1881 double dimness = 1 - (double)bright / HIGHLIGHT_COLOR_DARK_BOOST_LIMIT; |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1882 /* The additive adjustment. */ |
|
33456
d8d4ecfa24fd
(x_alloc_lighter_color): Use real brightness calculation.
Miles Bader <miles@gnu.org>
parents:
33449
diff
changeset
|
1883 int min_delta = delta * dimness * factor / 2; |
|
33449
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1884 |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1885 if (factor < 1) |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1886 { |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1887 new.red = max (0, new.red - min_delta); |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1888 new.green = max (0, new.green - min_delta); |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1889 new.blue = max (0, new.blue - min_delta); |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1890 } |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1891 else |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1892 { |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1893 new.red = min (0xffff, min_delta + new.red); |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1894 new.green = min (0xffff, min_delta + new.green); |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1895 new.blue = min (0xffff, min_delta + new.blue); |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1896 } |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1897 } |
|
41fcaa0b864b
(x_alloc_lighter_color): Include an additive component too for dark
Miles Bader <miles@gnu.org>
parents:
33303
diff
changeset
|
1898 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1899 /* Try to allocate the color. */ |
|
25529
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1900 success_p = x_alloc_nearest_color (f, cmap, &new); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1901 if (success_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1902 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1903 if (new.pixel == *pixel) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1904 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1905 /* If we end up with the same color as before, try adding |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1906 delta to the RGB values. */ |
|
27962
048184bb751e
(x_alloc_lighter_color, x_setup_relief_color): Use
Gerd Moellmann <gerd@gnu.org>
parents:
27857
diff
changeset
|
1907 x_free_colors (f, &new.pixel, 1); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1908 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1909 new.red = min (0xffff, delta + color.red); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1910 new.green = min (0xffff, delta + color.green); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1911 new.blue = min (0xffff, delta + color.blue); |
|
25529
7ae6423812ae
(XTset_vertical_scroll_bar): Block input when clearing
Gerd Moellmann <gerd@gnu.org>
parents:
25512
diff
changeset
|
1912 success_p = x_alloc_nearest_color (f, cmap, &new); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1913 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1914 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1915 success_p = 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1916 *pixel = new.pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1917 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1918 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1919 return success_p; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1920 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1921 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1922 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1923 /* Set up the foreground color for drawing relief lines of glyph |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1924 string S. RELIEF is a pointer to a struct relief containing the GC |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1925 with which lines will be drawn. Use a color that is FACTOR or |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1926 DELTA lighter or darker than the relief's background which is found |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1927 in S->f->output_data.x->relief_background. If such a color cannot |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1928 be allocated, use DEFAULT_PIXEL, instead. */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1929 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1930 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1931 x_setup_relief_color (f, relief, factor, delta, default_pixel) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1932 struct frame *f; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1933 struct relief *relief; |
|
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
25921
diff
changeset
|
1934 double factor; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1935 int delta; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1936 unsigned long default_pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1937 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1938 XGCValues xgcv; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1939 struct x_output *di = f->output_data.x; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1940 unsigned long mask = GCForeground | GCLineWidth | GCGraphicsExposures; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1941 unsigned long pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1942 unsigned long background = di->relief_background; |
|
27985
4ba445af210b
(x_term_init): Set Colormap member of x_display_info
Gerd Moellmann <gerd@gnu.org>
parents:
27974
diff
changeset
|
1943 Colormap cmap = FRAME_X_COLORMAP (f); |
|
25091
c3dc74005d22
(x_set_toolkit_scroll_bar_thumb): Don't call
Gerd Moellmann <gerd@gnu.org>
parents:
25085
diff
changeset
|
1944 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
|
c3dc74005d22
(x_set_toolkit_scroll_bar_thumb): Don't call
Gerd Moellmann <gerd@gnu.org>
parents:
25085
diff
changeset
|
1945 Display *dpy = FRAME_X_DISPLAY (f); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1946 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1947 xgcv.graphics_exposures = False; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1948 xgcv.line_width = 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1949 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1950 /* Free previously allocated color. The color cell will be reused |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1951 when it has been freed as many times as it was allocated, so this |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1952 doesn't affect faces using the same colors. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1953 if (relief->gc |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1954 && relief->allocated_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1955 { |
|
27962
048184bb751e
(x_alloc_lighter_color, x_setup_relief_color): Use
Gerd Moellmann <gerd@gnu.org>
parents:
27857
diff
changeset
|
1956 x_free_colors (f, &relief->pixel, 1); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1957 relief->allocated_p = 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1958 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1959 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1960 /* Allocate new color. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1961 xgcv.foreground = default_pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1962 pixel = background; |
|
25091
c3dc74005d22
(x_set_toolkit_scroll_bar_thumb): Don't call
Gerd Moellmann <gerd@gnu.org>
parents:
25085
diff
changeset
|
1963 if (dpyinfo->n_planes != 1 |
|
c3dc74005d22
(x_set_toolkit_scroll_bar_thumb): Don't call
Gerd Moellmann <gerd@gnu.org>
parents:
25085
diff
changeset
|
1964 && x_alloc_lighter_color (f, dpy, cmap, &pixel, factor, delta)) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1965 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1966 relief->allocated_p = 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1967 xgcv.foreground = relief->pixel = pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1968 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1969 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1970 if (relief->gc == 0) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1971 { |
|
25091
c3dc74005d22
(x_set_toolkit_scroll_bar_thumb): Don't call
Gerd Moellmann <gerd@gnu.org>
parents:
25085
diff
changeset
|
1972 xgcv.stipple = dpyinfo->gray; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1973 mask |= GCStipple; |
|
25091
c3dc74005d22
(x_set_toolkit_scroll_bar_thumb): Don't call
Gerd Moellmann <gerd@gnu.org>
parents:
25085
diff
changeset
|
1974 relief->gc = XCreateGC (dpy, FRAME_X_WINDOW (f), mask, &xgcv); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1975 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1976 else |
|
25091
c3dc74005d22
(x_set_toolkit_scroll_bar_thumb): Don't call
Gerd Moellmann <gerd@gnu.org>
parents:
25085
diff
changeset
|
1977 XChangeGC (dpy, relief->gc, mask, &xgcv); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1978 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1979 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1980 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1981 /* Set up colors for the relief lines around glyph string S. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1982 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1983 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1984 x_setup_relief_colors (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1985 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1986 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1987 struct x_output *di = s->f->output_data.x; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1988 unsigned long color; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1989 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1990 if (s->face->use_box_color_for_shadows_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1991 color = s->face->box_color; |
|
40265
44df655be97a
(x_setup_relief_colors): Use `IMAGE_BACKGROUND' and
Miles Bader <miles@gnu.org>
parents:
40259
diff
changeset
|
1992 else if (s->first_glyph->type == IMAGE_GLYPH |
|
42376
0f408d016a15
(x_setup_relief_colors): Don't compute an image's
Gerd Moellmann <gerd@gnu.org>
parents:
42374
diff
changeset
|
1993 && s->img->pixmap |
|
40265
44df655be97a
(x_setup_relief_colors): Use `IMAGE_BACKGROUND' and
Miles Bader <miles@gnu.org>
parents:
40259
diff
changeset
|
1994 && !IMAGE_BACKGROUND_TRANSPARENT (s->img, s->f, 0)) |
|
44df655be97a
(x_setup_relief_colors): Use `IMAGE_BACKGROUND' and
Miles Bader <miles@gnu.org>
parents:
40259
diff
changeset
|
1995 color = IMAGE_BACKGROUND (s->img, s->f, 0); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1996 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1997 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
1998 XGCValues xgcv; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
1999 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2000 /* Get the background color of the face. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2001 XGetGCValues (s->display, s->gc, GCBackground, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2002 color = xgcv.background; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2003 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2004 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2005 if (di->white_relief.gc == 0 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2006 || color != di->relief_background) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2007 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2008 di->relief_background = color; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2009 x_setup_relief_color (s->f, &di->white_relief, 1.2, 0x8000, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2010 WHITE_PIX_DEFAULT (s->f)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2011 x_setup_relief_color (s->f, &di->black_relief, 0.6, 0x4000, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2012 BLACK_PIX_DEFAULT (s->f)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2013 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2014 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2015 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2016 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2017 /* Draw a relief on frame F inside the rectangle given by LEFT_X, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2018 TOP_Y, RIGHT_X, and BOTTOM_Y. WIDTH is the thickness of the relief |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2019 to draw, it must be >= 0. RAISED_P non-zero means draw a raised |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2020 relief. LEFT_P non-zero means draw a relief on the left side of |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2021 the rectangle. RIGHT_P non-zero means draw a relief on the right |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2022 side of the rectangle. CLIP_RECT is the clipping rectangle to use |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2023 when drawing. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2024 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2025 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2026 x_draw_relief_rect (f, left_x, top_y, right_x, bottom_y, width, |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2027 raised_p, top_p, bot_p, left_p, right_p, clip_rect) |
| 771 | 2028 struct frame *f; |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2029 int left_x, top_y, right_x, bottom_y, width; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2030 int top_p, bot_p, left_p, right_p, raised_p; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2031 XRectangle *clip_rect; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2032 { |
|
39474
5f9f7d59fd79
(x_draw_relief_rect): Draw bottom relief 1 pixel more
Gerd Moellmann <gerd@gnu.org>
parents:
39434
diff
changeset
|
2033 Display *dpy = FRAME_X_DISPLAY (f); |
|
5f9f7d59fd79
(x_draw_relief_rect): Draw bottom relief 1 pixel more
Gerd Moellmann <gerd@gnu.org>
parents:
39434
diff
changeset
|
2034 Window window = FRAME_X_WINDOW (f); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2035 int i; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2036 GC gc; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2037 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2038 if (raised_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2039 gc = f->output_data.x->white_relief.gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2040 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2041 gc = f->output_data.x->black_relief.gc; |
|
39474
5f9f7d59fd79
(x_draw_relief_rect): Draw bottom relief 1 pixel more
Gerd Moellmann <gerd@gnu.org>
parents:
39434
diff
changeset
|
2042 XSetClipRectangles (dpy, gc, 0, 0, clip_rect, 1, Unsorted); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2043 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2044 /* Top. */ |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2045 if (top_p) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2046 for (i = 0; i < width; ++i) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2047 XDrawLine (dpy, window, gc, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2048 left_x + i * left_p, top_y + i, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2049 right_x + 1 - i * right_p, top_y + i); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2050 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2051 /* Left. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2052 if (left_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2053 for (i = 0; i < width; ++i) |
|
39474
5f9f7d59fd79
(x_draw_relief_rect): Draw bottom relief 1 pixel more
Gerd Moellmann <gerd@gnu.org>
parents:
39434
diff
changeset
|
2054 XDrawLine (dpy, window, gc, |
|
37033
fe7885cc9458
(x_draw_relief_rect): Extend left shadow to the
Gerd Moellmann <gerd@gnu.org>
parents:
37031
diff
changeset
|
2055 left_x + i, top_y + i, left_x + i, bottom_y - i + 1); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2056 |
|
39474
5f9f7d59fd79
(x_draw_relief_rect): Draw bottom relief 1 pixel more
Gerd Moellmann <gerd@gnu.org>
parents:
39434
diff
changeset
|
2057 XSetClipMask (dpy, gc, None); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2058 if (raised_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2059 gc = f->output_data.x->black_relief.gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2060 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2061 gc = f->output_data.x->white_relief.gc; |
|
39474
5f9f7d59fd79
(x_draw_relief_rect): Draw bottom relief 1 pixel more
Gerd Moellmann <gerd@gnu.org>
parents:
39434
diff
changeset
|
2062 XSetClipRectangles (dpy, gc, 0, 0, clip_rect, 1, Unsorted); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2063 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2064 /* Bottom. */ |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2065 if (bot_p) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2066 for (i = 0; i < width; ++i) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2067 XDrawLine (dpy, window, gc, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2068 left_x + i * left_p, bottom_y - i, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2069 right_x + 1 - i * right_p, bottom_y - i); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2070 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2071 /* Right. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2072 if (right_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2073 for (i = 0; i < width; ++i) |
|
39474
5f9f7d59fd79
(x_draw_relief_rect): Draw bottom relief 1 pixel more
Gerd Moellmann <gerd@gnu.org>
parents:
39434
diff
changeset
|
2074 XDrawLine (dpy, window, gc, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2075 right_x - i, top_y + i + 1, right_x - i, bottom_y - i); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2076 |
|
39474
5f9f7d59fd79
(x_draw_relief_rect): Draw bottom relief 1 pixel more
Gerd Moellmann <gerd@gnu.org>
parents:
39434
diff
changeset
|
2077 XSetClipMask (dpy, gc, None); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2078 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2079 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2080 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2081 /* Draw a box on frame F inside the rectangle given by LEFT_X, TOP_Y, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2082 RIGHT_X, and BOTTOM_Y. WIDTH is the thickness of the lines to |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2083 draw, it must be >= 0. LEFT_P non-zero means draw a line on the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2084 left side of the rectangle. RIGHT_P non-zero means draw a line |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2085 on the right side of the rectangle. CLIP_RECT is the clipping |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2086 rectangle to use when drawing. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2087 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2088 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2089 x_draw_box_rect (s, left_x, top_y, right_x, bottom_y, width, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2090 left_p, right_p, clip_rect) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2091 struct glyph_string *s; |
|
48330
e5d539ae9468
(x_draw_relief_rect, x_draw_box_rect, x_update_cursor):
Dave Love <fx@gnu.org>
parents:
48169
diff
changeset
|
2092 int left_x, top_y, right_x, bottom_y, width, left_p, right_p; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2093 XRectangle *clip_rect; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2094 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2095 XGCValues xgcv; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2096 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2097 XGetGCValues (s->display, s->gc, GCForeground, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2098 XSetForeground (s->display, s->gc, s->face->box_color); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2099 XSetClipRectangles (s->display, s->gc, 0, 0, clip_rect, 1, Unsorted); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2100 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2101 /* Top. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2102 XFillRectangle (s->display, s->window, s->gc, |
|
32513
545db232e60c
(x_draw_box_rect): Fix the calculation of width and height for
Kenichi Handa <handa@m17n.org>
parents:
32401
diff
changeset
|
2103 left_x, top_y, right_x - left_x + 1, width); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2104 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2105 /* Left. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2106 if (left_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2107 XFillRectangle (s->display, s->window, s->gc, |
|
32513
545db232e60c
(x_draw_box_rect): Fix the calculation of width and height for
Kenichi Handa <handa@m17n.org>
parents:
32401
diff
changeset
|
2108 left_x, top_y, width, bottom_y - top_y + 1); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2109 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2110 /* Bottom. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2111 XFillRectangle (s->display, s->window, s->gc, |
|
32513
545db232e60c
(x_draw_box_rect): Fix the calculation of width and height for
Kenichi Handa <handa@m17n.org>
parents:
32401
diff
changeset
|
2112 left_x, bottom_y - width + 1, right_x - left_x + 1, width); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2113 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2114 /* Right. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2115 if (right_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2116 XFillRectangle (s->display, s->window, s->gc, |
|
32513
545db232e60c
(x_draw_box_rect): Fix the calculation of width and height for
Kenichi Handa <handa@m17n.org>
parents:
32401
diff
changeset
|
2117 right_x - width + 1, top_y, width, bottom_y - top_y + 1); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2118 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2119 XSetForeground (s->display, s->gc, xgcv.foreground); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2120 XSetClipMask (s->display, s->gc, None); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2121 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2122 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2123 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2124 /* Draw a box around glyph string S. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2125 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2126 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2127 x_draw_glyph_string_box (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2128 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2129 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2130 int width, left_x, right_x, top_y, bottom_y, last_x, raised_p; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2131 int left_p, right_p; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2132 struct glyph *last_glyph; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2133 XRectangle clip_rect; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2134 |
|
59655
369714ad80ed
(x_draw_glyph_string_box): Fix last_x for full width rows.
Kim F. Storm <storm@cua.dk>
parents:
59264
diff
changeset
|
2135 last_x = ((s->row->full_width_p && !s->w->pseudo_window_p) |
|
369714ad80ed
(x_draw_glyph_string_box): Fix last_x for full width rows.
Kim F. Storm <storm@cua.dk>
parents:
59264
diff
changeset
|
2136 ? WINDOW_RIGHT_EDGE_X (s->w) |
|
369714ad80ed
(x_draw_glyph_string_box): Fix last_x for full width rows.
Kim F. Storm <storm@cua.dk>
parents:
59264
diff
changeset
|
2137 : window_box_right (s->w, s->area)); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2138 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2139 /* The glyph that may have a right box line. */ |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
2140 last_glyph = (s->cmp || s->img |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2141 ? s->first_glyph |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2142 : s->first_glyph + s->nchars - 1); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2143 |
|
36005
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
2144 width = abs (s->face->box_line_width); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2145 raised_p = s->face->box == FACE_RAISED_BOX; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2146 left_x = s->x; |
|
36795
e7722a221c28
(x_draw_glyph_string_box): Don't draw a full-width
Gerd Moellmann <gerd@gnu.org>
parents:
36776
diff
changeset
|
2147 right_x = (s->row->full_width_p && s->extends_to_end_of_line_p |
|
e7722a221c28
(x_draw_glyph_string_box): Don't draw a full-width
Gerd Moellmann <gerd@gnu.org>
parents:
36776
diff
changeset
|
2148 ? last_x - 1 |
|
e7722a221c28
(x_draw_glyph_string_box): Don't draw a full-width
Gerd Moellmann <gerd@gnu.org>
parents:
36776
diff
changeset
|
2149 : min (last_x, s->x + s->background_width) - 1); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2150 top_y = s->y; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2151 bottom_y = top_y + s->height - 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2152 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2153 left_p = (s->first_glyph->left_box_line_p |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2154 || (s->hl == DRAW_MOUSE_FACE |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2155 && (s->prev == NULL |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2156 || s->prev->hl != s->hl))); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2157 right_p = (last_glyph->right_box_line_p |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2158 || (s->hl == DRAW_MOUSE_FACE |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2159 && (s->next == NULL |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2160 || s->next->hl != s->hl))); |
|
40499
55065421f9e7
(x_draw_relief_rect): Correct bottom relief by 1 pixel.
Gerd Moellmann <gerd@gnu.org>
parents:
40446
diff
changeset
|
2161 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2162 get_glyph_string_clip_rect (s, &clip_rect); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2163 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2164 if (s->face->box == FACE_SIMPLE_BOX) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2165 x_draw_box_rect (s, left_x, top_y, right_x, bottom_y, width, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2166 left_p, right_p, &clip_rect); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2167 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2168 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2169 x_setup_relief_colors (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2170 x_draw_relief_rect (s->f, left_x, top_y, right_x, bottom_y, |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2171 width, raised_p, 1, 1, left_p, right_p, &clip_rect); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2172 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2173 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2174 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2175 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2176 /* Draw foreground of image glyph string S. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2177 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2178 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2179 x_draw_image_foreground (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2180 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2181 { |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2182 int x = s->x; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2183 int y = s->ybase - image_ascent (s->img, s->face, &s->slice); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2184 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2185 /* If first glyph of S has a left box line, start drawing it to the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2186 right of that line. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2187 if (s->face->box != FACE_NO_BOX |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2188 && s->first_glyph->left_box_line_p |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2189 && s->slice.x == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2190 x += abs (s->face->box_line_width); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2191 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2192 /* If there is a margin around the image, adjust x- and y-position |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2193 by that margin. */ |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2194 if (s->slice.x == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2195 x += s->img->hmargin; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2196 if (s->slice.y == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2197 y += s->img->vmargin; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2198 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2199 if (s->img->pixmap) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2200 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2201 if (s->img->mask) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2202 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2203 /* We can't set both a clip mask and use XSetClipRectangles |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2204 because the latter also sets a clip mask. We also can't |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2205 trust on the shape extension to be available |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2206 (XShapeCombineRegion). So, compute the rectangle to draw |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2207 manually. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2208 unsigned long mask = (GCClipMask | GCClipXOrigin | GCClipYOrigin |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2209 | GCFunction); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2210 XGCValues xgcv; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2211 XRectangle clip_rect, image_rect, r; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2212 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2213 xgcv.clip_mask = s->img->mask; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2214 xgcv.clip_x_origin = x; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2215 xgcv.clip_y_origin = y; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2216 xgcv.function = GXcopy; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2217 XChangeGC (s->display, s->gc, mask, &xgcv); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2218 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2219 get_glyph_string_clip_rect (s, &clip_rect); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2220 image_rect.x = x; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2221 image_rect.y = y; |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2222 image_rect.width = s->slice.width; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2223 image_rect.height = s->slice.height; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2224 if (x_intersect_rectangles (&clip_rect, &image_rect, &r)) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2225 XCopyArea (s->display, s->img->pixmap, s->window, s->gc, |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2226 s->slice.x + r.x - x, s->slice.y + r.y - y, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2227 r.width, r.height, r.x, r.y); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2228 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2229 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2230 { |
|
30653
319c3bad8ada
(x_draw_image_foreground): Avoid drawing outside
Gerd Moellmann <gerd@gnu.org>
parents:
30371
diff
changeset
|
2231 XRectangle clip_rect, image_rect, r; |
|
319c3bad8ada
(x_draw_image_foreground): Avoid drawing outside
Gerd Moellmann <gerd@gnu.org>
parents:
30371
diff
changeset
|
2232 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2233 get_glyph_string_clip_rect (s, &clip_rect); |
|
30653
319c3bad8ada
(x_draw_image_foreground): Avoid drawing outside
Gerd Moellmann <gerd@gnu.org>
parents:
30371
diff
changeset
|
2234 image_rect.x = x; |
|
319c3bad8ada
(x_draw_image_foreground): Avoid drawing outside
Gerd Moellmann <gerd@gnu.org>
parents:
30371
diff
changeset
|
2235 image_rect.y = y; |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2236 image_rect.width = s->slice.width; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2237 image_rect.height = s->slice.height; |
|
30653
319c3bad8ada
(x_draw_image_foreground): Avoid drawing outside
Gerd Moellmann <gerd@gnu.org>
parents:
30371
diff
changeset
|
2238 if (x_intersect_rectangles (&clip_rect, &image_rect, &r)) |
|
319c3bad8ada
(x_draw_image_foreground): Avoid drawing outside
Gerd Moellmann <gerd@gnu.org>
parents:
30371
diff
changeset
|
2239 XCopyArea (s->display, s->img->pixmap, s->window, s->gc, |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2240 s->slice.x + r.x - x, s->slice.y + r.y - y, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2241 r.width, r.height, r.x, r.y); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2242 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2243 /* When the image has a mask, we can expect that at |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2244 least part of a mouse highlight or a block cursor will |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2245 be visible. If the image doesn't have a mask, make |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2246 a block cursor visible by drawing a rectangle around |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2247 the image. I believe it's looking better if we do |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2248 nothing here for mouse-face. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2249 if (s->hl == DRAW_CURSOR) |
|
45197
0b6da8b7d7ac
(x_draw_image_foreground, x_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44974
diff
changeset
|
2250 { |
|
0b6da8b7d7ac
(x_draw_image_foreground, x_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44974
diff
changeset
|
2251 int r = s->img->relief; |
|
0b6da8b7d7ac
(x_draw_image_foreground, x_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44974
diff
changeset
|
2252 if (r < 0) r = -r; |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2253 XDrawRectangle (s->display, s->window, s->gc, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2254 x - r, y - r, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2255 s->slice.width + r*2 - 1, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2256 s->slice.height + r*2 - 1); |
|
45197
0b6da8b7d7ac
(x_draw_image_foreground, x_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44974
diff
changeset
|
2257 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2258 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2259 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2260 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2261 /* Draw a rectangle if image could not be loaded. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2262 XDrawRectangle (s->display, s->window, s->gc, x, y, |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2263 s->slice.width - 1, s->slice.height - 1); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2264 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2265 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2266 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2267 /* Draw a relief around the image glyph string S. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2268 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2269 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2270 x_draw_image_relief (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2271 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2272 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2273 int x0, y0, x1, y1, thick, raised_p; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2274 XRectangle r; |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2275 int x = s->x; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2276 int y = s->ybase - image_ascent (s->img, s->face, &s->slice); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2277 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2278 /* If first glyph of S has a left box line, start drawing it to the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2279 right of that line. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2280 if (s->face->box != FACE_NO_BOX |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2281 && s->first_glyph->left_box_line_p |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2282 && s->slice.x == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2283 x += abs (s->face->box_line_width); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2284 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2285 /* If there is a margin around the image, adjust x- and y-position |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2286 by that margin. */ |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2287 if (s->slice.x == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2288 x += s->img->hmargin; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2289 if (s->slice.y == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2290 y += s->img->vmargin; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2291 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2292 if (s->hl == DRAW_IMAGE_SUNKEN |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2293 || s->hl == DRAW_IMAGE_RAISED) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2294 { |
|
41791
fcab0e888c5c
(x_draw_image_relief): Use predefined macro instead of constant when the
Pavel Jan?k <Pavel@Janik.cz>
parents:
41788
diff
changeset
|
2295 thick = tool_bar_button_relief >= 0 ? tool_bar_button_relief : DEFAULT_TOOL_BAR_BUTTON_RELIEF; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2296 raised_p = s->hl == DRAW_IMAGE_RAISED; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2297 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2298 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2299 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2300 thick = abs (s->img->relief); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2301 raised_p = s->img->relief > 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2302 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2303 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2304 x0 = x - thick; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2305 y0 = y - thick; |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2306 x1 = x + s->slice.width + thick - 1; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2307 y1 = y + s->slice.height + thick - 1; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2308 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2309 x_setup_relief_colors (s); |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2310 get_glyph_string_clip_rect (s, &r); |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2311 x_draw_relief_rect (s->f, x0, y0, x1, y1, thick, raised_p, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2312 s->slice.y == 0, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2313 s->slice.y + s->slice.height == s->img->height, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2314 s->slice.x == 0, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2315 s->slice.x + s->slice.width == s->img->width, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2316 &r); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2317 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2318 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2319 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2320 /* Draw the foreground of image glyph string S to PIXMAP. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2321 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2322 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2323 x_draw_image_foreground_1 (s, pixmap) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2324 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2325 Pixmap pixmap; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2326 { |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2327 int x = 0; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2328 int y = s->ybase - s->y - image_ascent (s->img, s->face, &s->slice); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2329 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2330 /* If first glyph of S has a left box line, start drawing it to the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2331 right of that line. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2332 if (s->face->box != FACE_NO_BOX |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2333 && s->first_glyph->left_box_line_p |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2334 && s->slice.x == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2335 x += abs (s->face->box_line_width); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2336 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2337 /* If there is a margin around the image, adjust x- and y-position |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2338 by that margin. */ |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2339 if (s->slice.x == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2340 x += s->img->hmargin; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2341 if (s->slice.y == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2342 y += s->img->vmargin; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2343 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2344 if (s->img->pixmap) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2345 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2346 if (s->img->mask) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2347 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2348 /* We can't set both a clip mask and use XSetClipRectangles |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2349 because the latter also sets a clip mask. We also can't |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2350 trust on the shape extension to be available |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2351 (XShapeCombineRegion). So, compute the rectangle to draw |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2352 manually. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2353 unsigned long mask = (GCClipMask | GCClipXOrigin | GCClipYOrigin |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2354 | GCFunction); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2355 XGCValues xgcv; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2356 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2357 xgcv.clip_mask = s->img->mask; |
|
56150
52798bcd26d1
* xterm.c (x_draw_image_foreground_1): Subtract slice.x/y from
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
56135
diff
changeset
|
2358 xgcv.clip_x_origin = x - s->slice.x; |
|
52798bcd26d1
* xterm.c (x_draw_image_foreground_1): Subtract slice.x/y from
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
56135
diff
changeset
|
2359 xgcv.clip_y_origin = y - s->slice.y; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2360 xgcv.function = GXcopy; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2361 XChangeGC (s->display, s->gc, mask, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2362 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2363 XCopyArea (s->display, s->img->pixmap, pixmap, s->gc, |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2364 s->slice.x, s->slice.y, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2365 s->slice.width, s->slice.height, x, y); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2366 XSetClipMask (s->display, s->gc, None); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2367 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2368 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2369 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2370 XCopyArea (s->display, s->img->pixmap, pixmap, s->gc, |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2371 s->slice.x, s->slice.y, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2372 s->slice.width, s->slice.height, x, y); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2373 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2374 /* When the image has a mask, we can expect that at |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2375 least part of a mouse highlight or a block cursor will |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2376 be visible. If the image doesn't have a mask, make |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2377 a block cursor visible by drawing a rectangle around |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2378 the image. I believe it's looking better if we do |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2379 nothing here for mouse-face. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2380 if (s->hl == DRAW_CURSOR) |
|
45197
0b6da8b7d7ac
(x_draw_image_foreground, x_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44974
diff
changeset
|
2381 { |
|
0b6da8b7d7ac
(x_draw_image_foreground, x_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44974
diff
changeset
|
2382 int r = s->img->relief; |
|
0b6da8b7d7ac
(x_draw_image_foreground, x_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44974
diff
changeset
|
2383 if (r < 0) r = -r; |
|
0b6da8b7d7ac
(x_draw_image_foreground, x_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44974
diff
changeset
|
2384 XDrawRectangle (s->display, s->window, s->gc, x - r, y - r, |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2385 s->slice.width + r*2 - 1, |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2386 s->slice.height + r*2 - 1); |
|
45197
0b6da8b7d7ac
(x_draw_image_foreground, x_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44974
diff
changeset
|
2387 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2388 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2389 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2390 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2391 /* Draw a rectangle if image could not be loaded. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2392 XDrawRectangle (s->display, pixmap, s->gc, x, y, |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2393 s->slice.width - 1, s->slice.height - 1); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2394 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2395 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2396 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2397 /* Draw part of the background of glyph string S. X, Y, W, and H |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2398 give the rectangle to draw. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2399 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2400 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2401 x_draw_glyph_string_bg_rect (s, x, y, w, h) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2402 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2403 int x, y, w, h; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2404 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2405 if (s->stippled_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2406 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2407 /* Fill background with a stipple pattern. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2408 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2409 XFillRectangle (s->display, s->window, s->gc, x, y, w, h); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2410 XSetFillStyle (s->display, s->gc, FillSolid); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2411 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2412 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2413 x_clear_glyph_string_rect (s, x, y, w, h); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2414 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2415 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2416 |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2417 /* Draw image glyph string S. |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2418 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2419 s->y |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2420 s->x +------------------------- |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2421 | s->face->box |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2422 | |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2423 | +------------------------- |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2424 | | s->img->margin |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2425 | | |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2426 | | +------------------- |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2427 | | | the image |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2428 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2429 */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2430 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2431 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2432 x_draw_image_glyph_string (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2433 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2434 { |
|
36005
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
2435 int box_line_hwidth = abs (s->face->box_line_width); |
|
58a1ada9bf57
(x_produce_image_glyph): Pay attention to the case that
Kenichi Handa <handa@m17n.org>
parents:
35897
diff
changeset
|
2436 int box_line_vwidth = max (s->face->box_line_width, 0); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2437 int height; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2438 Pixmap pixmap = None; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2439 |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2440 height = s->height; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2441 if (s->slice.y == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2442 height -= box_line_vwidth; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2443 if (s->slice.y + s->slice.height >= s->img->height) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2444 height -= box_line_vwidth; |
| 49322 | 2445 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2446 /* Fill background with face under the image. Do it only if row is |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2447 taller than image or if image has a clip mask to reduce |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2448 flickering. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2449 s->stippled_p = s->face->stipple != 0; |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2450 if (height > s->slice.height |
|
35276
008aea836cbc
(x_produce_image_glyph, x_draw_image_foreground)
Gerd Moellmann <gerd@gnu.org>
parents:
35272
diff
changeset
|
2451 || s->img->hmargin |
|
008aea836cbc
(x_produce_image_glyph, x_draw_image_foreground)
Gerd Moellmann <gerd@gnu.org>
parents:
35272
diff
changeset
|
2452 || s->img->vmargin |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2453 || s->img->mask |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2454 || s->img->pixmap == 0 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2455 || s->width != s->background_width) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2456 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2457 if (s->img->mask) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2458 { |
|
31694
97c48afc4c5a
(x_draw_image_glyph_string): Remove a comment describing
Gerd Moellmann <gerd@gnu.org>
parents:
31614
diff
changeset
|
2459 /* Create a pixmap as large as the glyph string. Fill it |
|
97c48afc4c5a
(x_draw_image_glyph_string): Remove a comment describing
Gerd Moellmann <gerd@gnu.org>
parents:
31614
diff
changeset
|
2460 with the background color. Copy the image to it, using |
|
97c48afc4c5a
(x_draw_image_glyph_string): Remove a comment describing
Gerd Moellmann <gerd@gnu.org>
parents:
31614
diff
changeset
|
2461 its mask. Copy the temporary pixmap to the display. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2462 Screen *screen = FRAME_X_SCREEN (s->f); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2463 int depth = DefaultDepthOfScreen (screen); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2464 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2465 /* Create a pixmap as large as the glyph string. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2466 pixmap = XCreatePixmap (s->display, s->window, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2467 s->background_width, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2468 s->height, depth); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2469 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2470 /* Don't clip in the following because we're working on the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2471 pixmap. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2472 XSetClipMask (s->display, s->gc, None); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2473 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2474 /* Fill the pixmap with the background color/stipple. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2475 if (s->stippled_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2476 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2477 /* Fill background with a stipple pattern. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2478 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2479 XFillRectangle (s->display, pixmap, s->gc, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2480 0, 0, s->background_width, s->height); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2481 XSetFillStyle (s->display, s->gc, FillSolid); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2482 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2483 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2484 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2485 XGCValues xgcv; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2486 XGetGCValues (s->display, s->gc, GCForeground | GCBackground, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2487 &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2488 XSetForeground (s->display, s->gc, xgcv.background); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2489 XFillRectangle (s->display, pixmap, s->gc, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2490 0, 0, s->background_width, s->height); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2491 XSetForeground (s->display, s->gc, xgcv.foreground); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2492 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2493 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2494 else |
|
55030
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2495 { |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2496 int x = s->x; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2497 int y = s->y; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2498 |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2499 if (s->first_glyph->left_box_line_p |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2500 && s->slice.x == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2501 x += box_line_hwidth; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2502 |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2503 if (s->slice.y == 0) |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2504 y += box_line_vwidth; |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2505 |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2506 x_draw_glyph_string_bg_rect (s, x, y, s->background_width, height); |
|
44eb66585062
(x_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54733
diff
changeset
|
2507 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2508 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2509 s->background_filled_p = 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2510 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2511 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2512 /* Draw the foreground. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2513 if (pixmap != None) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2514 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2515 x_draw_image_foreground_1 (s, pixmap); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2516 x_set_glyph_string_clipping (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2517 XCopyArea (s->display, pixmap, s->window, s->gc, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2518 0, 0, s->background_width, s->height, s->x, s->y); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2519 XFreePixmap (s->display, pixmap); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2520 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2521 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2522 x_draw_image_foreground (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2523 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2524 /* If we must draw a relief around the image, do it. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2525 if (s->img->relief |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2526 || s->hl == DRAW_IMAGE_RAISED |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2527 || s->hl == DRAW_IMAGE_SUNKEN) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2528 x_draw_image_relief (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2529 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2530 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2531 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2532 /* Draw stretch glyph string S. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2533 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2534 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2535 x_draw_stretch_glyph_string (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2536 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2537 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2538 xassert (s->first_glyph->type == STRETCH_GLYPH); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2539 s->stippled_p = s->face->stipple != 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2540 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2541 if (s->hl == DRAW_CURSOR |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2542 && !x_stretch_cursor_p) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2543 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2544 /* If `x-stretch-block-cursor' is nil, don't draw a block cursor |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2545 as wide as the stretch glyph. */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
2546 int width = min (FRAME_COLUMN_WIDTH (s->f), s->background_width); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2547 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2548 /* Draw cursor. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2549 x_draw_glyph_string_bg_rect (s, s->x, s->y, width, s->height); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2550 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2551 /* Clear rest using the GC of the original non-cursor face. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2552 if (width < s->background_width) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2553 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2554 int x = s->x + width, y = s->y; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2555 int w = s->background_width - width, h = s->height; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2556 XRectangle r; |
|
37922
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
2557 GC gc; |
|
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
2558 |
|
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
2559 if (s->row->mouse_face_p |
|
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
2560 && cursor_in_mouse_face_p (s->w)) |
|
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
2561 { |
|
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
2562 x_set_mouse_face_gc (s); |
|
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
2563 gc = s->gc; |
|
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
2564 } |
|
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
2565 else |
|
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
2566 gc = s->face->gc; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2567 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2568 get_glyph_string_clip_rect (s, &r); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2569 XSetClipRectangles (s->display, gc, 0, 0, &r, 1, Unsorted); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2570 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2571 if (s->face->stipple) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2572 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2573 /* Fill background with a stipple pattern. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2574 XSetFillStyle (s->display, gc, FillOpaqueStippled); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2575 XFillRectangle (s->display, s->window, gc, x, y, w, h); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2576 XSetFillStyle (s->display, gc, FillSolid); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2577 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2578 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2579 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2580 XGCValues xgcv; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2581 XGetGCValues (s->display, gc, GCForeground | GCBackground, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2582 XSetForeground (s->display, gc, xgcv.background); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2583 XFillRectangle (s->display, s->window, gc, x, y, w, h); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2584 XSetForeground (s->display, gc, xgcv.foreground); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2585 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2586 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2587 } |
|
37535
6c6b5bd0f257
(x_draw_stretch_glyph_string): Don't draw background
Gerd Moellmann <gerd@gnu.org>
parents:
37525
diff
changeset
|
2588 else if (!s->background_filled_p) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2589 x_draw_glyph_string_bg_rect (s, s->x, s->y, s->background_width, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2590 s->height); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2591 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2592 s->background_filled_p = 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2593 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2594 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2595 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2596 /* Draw glyph string S. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2597 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2598 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2599 x_draw_glyph_string (s) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2600 struct glyph_string *s; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2601 { |
|
36800
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2602 int relief_drawn_p = 0; |
|
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2603 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2604 /* If S draws into the background of its successor, draw the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2605 background of the successor first so that S can draw into it. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2606 This makes S->next use XDrawString instead of XDrawImageString. */ |
|
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65764
diff
changeset
|
2607 if (s->next && s->right_overhang && !s->for_overlaps) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2608 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2609 xassert (s->next->img == NULL); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2610 x_set_glyph_string_gc (s->next); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2611 x_set_glyph_string_clipping (s->next); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2612 x_draw_glyph_string_background (s->next, 1); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2613 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2614 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2615 /* Set up S->gc, set clipping and draw S. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2616 x_set_glyph_string_gc (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2617 |
|
36800
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2618 /* Draw relief (if any) in advance for char/composition so that the |
|
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2619 glyph string can be drawn over it. */ |
|
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65764
diff
changeset
|
2620 if (!s->for_overlaps |
|
36800
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2621 && s->face->box != FACE_NO_BOX |
|
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2622 && (s->first_glyph->type == CHAR_GLYPH |
|
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2623 || s->first_glyph->type == COMPOSITE_GLYPH)) |
|
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2624 |
|
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2625 { |
|
39950
df00f7799bb7
(x_draw_glyph_string): Restore clipping after
Gerd Moellmann <gerd@gnu.org>
parents:
39922
diff
changeset
|
2626 x_set_glyph_string_clipping (s); |
|
36800
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2627 x_draw_glyph_string_background (s, 1); |
|
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2628 x_draw_glyph_string_box (s); |
|
39950
df00f7799bb7
(x_draw_glyph_string): Restore clipping after
Gerd Moellmann <gerd@gnu.org>
parents:
39922
diff
changeset
|
2629 x_set_glyph_string_clipping (s); |
|
36800
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2630 relief_drawn_p = 1; |
|
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2631 } |
|
39950
df00f7799bb7
(x_draw_glyph_string): Restore clipping after
Gerd Moellmann <gerd@gnu.org>
parents:
39922
diff
changeset
|
2632 else |
|
df00f7799bb7
(x_draw_glyph_string): Restore clipping after
Gerd Moellmann <gerd@gnu.org>
parents:
39922
diff
changeset
|
2633 x_set_glyph_string_clipping (s); |
|
36800
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2634 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2635 switch (s->first_glyph->type) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2636 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2637 case IMAGE_GLYPH: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2638 x_draw_image_glyph_string (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2639 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2640 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2641 case STRETCH_GLYPH: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2642 x_draw_stretch_glyph_string (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2643 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2644 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2645 case CHAR_GLYPH: |
|
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65764
diff
changeset
|
2646 if (s->for_overlaps) |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2647 s->background_filled_p = 1; |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2648 else |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2649 x_draw_glyph_string_background (s, 0); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2650 x_draw_glyph_string_foreground (s); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2651 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2652 |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
2653 case COMPOSITE_GLYPH: |
|
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65764
diff
changeset
|
2654 if (s->for_overlaps || s->gidx > 0) |
|
26879
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
2655 s->background_filled_p = 1; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
2656 else |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
2657 x_draw_glyph_string_background (s, 1); |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
2658 x_draw_composite_glyph_string_foreground (s); |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
2659 break; |
|
b4de7fa9866e
(x_append_glyph): Setup members of struct glyph properly
Kenichi Handa <handa@m17n.org>
parents:
26829
diff
changeset
|
2660 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2661 default: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2662 abort (); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2663 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2664 |
|
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65764
diff
changeset
|
2665 if (!s->for_overlaps) |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2666 { |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2667 /* Draw underline. */ |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2668 if (s->face->underline_p) |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2669 { |
|
32945
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2670 unsigned long tem, h; |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2671 int y; |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2672 |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2673 /* Get the underline thickness. Default is 1 pixel. */ |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2674 if (!XGetFontProperty (s->font, XA_UNDERLINE_THICKNESS, &h)) |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2675 h = 1; |
|
32945
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2676 |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2677 /* Get the underline position. This is the recommended |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2678 vertical offset in pixels from the baseline to the top of |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2679 the underline. This is a signed value according to the |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2680 specs, and its default is |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2681 |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2682 ROUND ((maximum descent) / 2), with |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2683 ROUND(x) = floor (x + 0.5) */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2684 |
|
37153
3799cab1815b
(x_use_underline_position_properties): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37143
diff
changeset
|
2685 if (x_use_underline_position_properties |
|
3799cab1815b
(x_use_underline_position_properties): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37143
diff
changeset
|
2686 && XGetFontProperty (s->font, XA_UNDERLINE_POSITION, &tem)) |
|
32945
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2687 y = s->ybase + (long) tem; |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2688 else if (s->face->font) |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2689 y = s->ybase + (s->face->font->max_bounds.descent + 1) / 2; |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2690 else |
|
37031
5cb404651755
(expose_window_tree, expose_frame): Don't compute
Gerd Moellmann <gerd@gnu.org>
parents:
36948
diff
changeset
|
2691 y = s->y + s->height - h; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2692 |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2693 if (s->face->underline_defaulted_p) |
|
32945
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2694 XFillRectangle (s->display, s->window, s->gc, |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2695 s->x, y, s->width, h); |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2696 else |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2697 { |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2698 XGCValues xgcv; |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2699 XGetGCValues (s->display, s->gc, GCForeground, &xgcv); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2700 XSetForeground (s->display, s->gc, s->face->underline_color); |
|
32945
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2701 XFillRectangle (s->display, s->window, s->gc, |
|
1b418a786c41
(x_draw_glyph_string): Treat XA_UNDERLINE_POSITION as a
Gerd Moellmann <gerd@gnu.org>
parents:
32938
diff
changeset
|
2702 s->x, y, s->width, h); |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2703 XSetForeground (s->display, s->gc, xgcv.foreground); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2704 } |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2705 } |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2706 |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2707 /* Draw overline. */ |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2708 if (s->face->overline_p) |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2709 { |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2710 unsigned long dy = 0, h = 1; |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2711 |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2712 if (s->face->overline_color_defaulted_p) |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2713 XFillRectangle (s->display, s->window, s->gc, s->x, s->y + dy, |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2714 s->width, h); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2715 else |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2716 { |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2717 XGCValues xgcv; |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2718 XGetGCValues (s->display, s->gc, GCForeground, &xgcv); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2719 XSetForeground (s->display, s->gc, s->face->overline_color); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2720 XFillRectangle (s->display, s->window, s->gc, s->x, s->y + dy, |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2721 s->width, h); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2722 XSetForeground (s->display, s->gc, xgcv.foreground); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2723 } |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2724 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2725 |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2726 /* Draw strike-through. */ |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2727 if (s->face->strike_through_p) |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2728 { |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2729 unsigned long h = 1; |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2730 unsigned long dy = (s->height - h) / 2; |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2731 |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2732 if (s->face->strike_through_color_defaulted_p) |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2733 XFillRectangle (s->display, s->window, s->gc, s->x, s->y + dy, |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2734 s->width, h); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2735 else |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2736 { |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2737 XGCValues xgcv; |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2738 XGetGCValues (s->display, s->gc, GCForeground, &xgcv); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2739 XSetForeground (s->display, s->gc, s->face->strike_through_color); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2740 XFillRectangle (s->display, s->window, s->gc, s->x, s->y + dy, |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2741 s->width, h); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2742 XSetForeground (s->display, s->gc, xgcv.foreground); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2743 } |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2744 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2745 |
|
36800
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2746 /* Draw relief if not yet drawn. */ |
|
7a809e9fc67e
(x_draw_glyph_string): Draw relief (if any) before
Kenichi Handa <handa@m17n.org>
parents:
36795
diff
changeset
|
2747 if (!relief_drawn_p && s->face->box != FACE_NO_BOX) |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2748 x_draw_glyph_string_box (s); |
|
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
2749 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2750 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2751 /* Reset clipping. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2752 XSetClipMask (s->display, s->gc, None); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2753 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2754 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2755 /* Shift display to make room for inserted glyphs. */ |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2756 |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2757 void |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2758 x_shift_glyphs_for_insert (f, x, y, width, height, shift_by) |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2759 struct frame *f; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2760 int x, y, width, height, shift_by; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2761 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2762 XCopyArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), FRAME_X_WINDOW (f), |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2763 f->output_data.x->normal_gc, |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2764 x, y, width, height, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2765 x + shift_by, y); |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
2766 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2767 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2768 /* Delete N glyphs at the nominal cursor position. Not implemented |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2769 for X frames. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2770 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2771 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2772 x_delete_glyphs (n) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2773 register int n; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2774 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2775 abort (); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2776 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2777 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2778 |
|
35581
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2779 /* Like XClearArea, but check that WIDTH and HEIGHT are reasonable. |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2780 If they are <= 0, this is probably an error. */ |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2781 |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2782 void |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2783 x_clear_area (dpy, window, x, y, width, height, exposures) |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2784 Display *dpy; |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2785 Window window; |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2786 int x, y; |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2787 int width, height; |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2788 int exposures; |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2789 { |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2790 xassert (width > 0 && height > 0); |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2791 XClearArea (dpy, window, x, y, width, height, exposures); |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2792 } |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2793 |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
2794 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2795 /* Clear entire frame. If updating_frame is non-null, clear that |
|
25682
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
2796 frame. Otherwise clear the selected frame. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2797 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2798 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2799 x_clear_frame () |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2800 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2801 struct frame *f; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2802 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2803 if (updating_frame) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2804 f = updating_frame; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2805 else |
|
25682
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
2806 f = SELECTED_FRAME (); |
| 771 | 2807 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2808 /* Clearing the frame will erase any cursor, so mark them all as no |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2809 longer visible. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2810 mark_window_cursors_off (XWINDOW (FRAME_ROOT_WINDOW (f))); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2811 output_cursor.hpos = output_cursor.vpos = 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2812 output_cursor.x = -1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2813 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2814 /* We don't set the output cursor here because there will always |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2815 follow an explicit cursor_to. */ |
| 286 | 2816 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
|
2817 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
|
2818 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
2819 /* 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
|
2820 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
|
2821 x_scroll_bar_clear (f); |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2822 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2823 XFlush (FRAME_X_DISPLAY (f)); |
|
50130
66a7f2850b56
Clear frame didn't redraw scrollbars, fixed that.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50103
diff
changeset
|
2824 |
| 286 | 2825 UNBLOCK_INPUT; |
| 2826 } | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2827 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2828 |
|
6791
7036e4fd549f
(dumpglyphs): Clear any extra pixel rows below the text.
Richard M. Stallman <rms@gnu.org>
parents:
6767
diff
changeset
|
2829 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2830 /* 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
|
2831 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2832 /* We use the select system call to do the waiting, so we have to make |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2833 sure it's available. If it isn't, we just won't do visual bells. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2834 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2835 #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT) |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2836 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2837 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2838 /* Subtract the `struct timeval' values X and Y, storing the result in |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2839 *RESULT. Return 1 if the difference is negative, otherwise 0. */ |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2840 |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2841 static int |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2842 timeval_subtract (result, x, y) |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2843 struct timeval *result, x, y; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2844 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2845 /* Perform the carry for the later subtraction by updating y. This |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2846 is safer because on some systems the tv_sec member is unsigned. */ |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2847 if (x.tv_usec < y.tv_usec) |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2848 { |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2849 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
|
2850 y.tv_usec -= 1000000 * nsec; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2851 y.tv_sec += nsec; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2852 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2853 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2854 if (x.tv_usec - y.tv_usec > 1000000) |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2855 { |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2856 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
|
2857 y.tv_usec += 1000000 * nsec; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2858 y.tv_sec -= nsec; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2859 } |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2860 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2861 /* Compute the time remaining to wait. tv_usec is certainly |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2862 positive. */ |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2863 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
|
2864 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
|
2865 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2866 /* Return indication of whether the result should be considered |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2867 negative. */ |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2868 return x.tv_sec < y.tv_sec; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2869 } |
| 286 | 2870 |
| 21514 | 2871 void |
| 771 | 2872 XTflash (f) |
| 2873 struct frame *f; | |
| 286 | 2874 { |
| 2875 BLOCK_INPUT; | |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2876 |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2877 { |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2878 GC gc; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2879 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2880 /* Create a GC that will use the GXxor function to flip foreground |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2881 pixels into background pixels. */ |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2882 { |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2883 XGCValues values; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2884 |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2885 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
|
2886 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
|
2887 ^ f->output_data.x->background_pixel); |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
2888 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2889 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
|
2890 GCFunction | GCForeground, &values); |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2891 } |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2892 |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2893 { |
|
16352
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2894 /* Get the height not including a menu bar widget. */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
2895 int height = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, FRAME_LINES (f)); |
|
16352
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2896 /* Height of each line to flash. */ |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2897 int flash_height = FRAME_LINE_HEIGHT (f); |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2898 /* These will be the left and right margins of the rectangles. */ |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2899 int flash_left = FRAME_INTERNAL_BORDER_WIDTH (f); |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
2900 int flash_right = FRAME_PIXEL_WIDTH (f) - FRAME_INTERNAL_BORDER_WIDTH (f); |
|
16352
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2901 |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2902 int width; |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2903 |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2904 /* Don't flash the area between a scroll bar and the frame |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2905 edge it is next to. */ |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2906 switch (FRAME_VERTICAL_SCROLL_BAR_TYPE (f)) |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2907 { |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2908 case vertical_scroll_bar_left: |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2909 flash_left += VERTICAL_SCROLL_BAR_WIDTH_TRIM; |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2910 break; |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2911 |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2912 case vertical_scroll_bar_right: |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2913 flash_right -= VERTICAL_SCROLL_BAR_WIDTH_TRIM; |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2914 break; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2915 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2916 default: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2917 break; |
|
16352
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2918 } |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2919 |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2920 width = flash_right - flash_left; |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2921 |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2922 /* If window is tall, flash top and bottom line. */ |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2923 if (height > 3 * FRAME_LINE_HEIGHT (f)) |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2924 { |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2925 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2926 flash_left, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2927 (FRAME_INTERNAL_BORDER_WIDTH (f) |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
2928 + FRAME_TOOL_BAR_LINES (f) * FRAME_LINE_HEIGHT (f)), |
|
16352
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2929 width, flash_height); |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2930 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2931 flash_left, |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2932 (height - flash_height |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2933 - FRAME_INTERNAL_BORDER_WIDTH (f)), |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2934 width, flash_height); |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2935 } |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2936 else |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2937 /* If it is short, flash it all. */ |
|
16352
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2938 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2939 flash_left, FRAME_INTERNAL_BORDER_WIDTH (f), |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2940 width, height - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)); |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2941 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2942 x_flush (f); |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2943 |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2944 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2945 struct timeval wakeup; |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2946 |
|
5362
d1fa597d923d
(XTflush): FIx typo in last change.
Richard M. Stallman <rms@gnu.org>
parents:
5357
diff
changeset
|
2947 EMACS_GET_TIME (wakeup); |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2948 |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2949 /* 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
|
2950 wakeup.tv_usec += 150000; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2951 wakeup.tv_sec += (wakeup.tv_usec / 1000000); |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2952 wakeup.tv_usec %= 1000000; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2953 |
|
36599
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2954 /* Keep waiting until past the time wakeup or any input gets |
|
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2955 available. */ |
|
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2956 while (! detect_input_pending ()) |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2957 { |
|
36599
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2958 struct timeval current; |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2959 struct timeval timeout; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2960 |
|
36599
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2961 EMACS_GET_TIME (current); |
|
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2962 |
|
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2963 /* Break if result would be negative. */ |
|
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2964 if (timeval_subtract (¤t, wakeup, current)) |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2965 break; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2966 |
|
36599
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2967 /* How long `select' should wait. */ |
|
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2968 timeout.tv_sec = 0; |
|
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2969 timeout.tv_usec = 10000; |
|
3813a1116259
(XTflash): Make the timeout of select shorter, and call
Gerd Moellmann <gerd@gnu.org>
parents:
36587
diff
changeset
|
2970 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2971 /* 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
|
2972 select (0, NULL, NULL, NULL, &timeout); |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2973 } |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2974 } |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
2975 |
|
16352
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2976 /* If window is tall, flash top and bottom line. */ |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2977 if (height > 3 * FRAME_LINE_HEIGHT (f)) |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2978 { |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2979 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2980 flash_left, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2981 (FRAME_INTERNAL_BORDER_WIDTH (f) |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
2982 + FRAME_TOOL_BAR_LINES (f) * FRAME_LINE_HEIGHT (f)), |
|
16352
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2983 width, flash_height); |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2984 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2985 flash_left, |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2986 (height - flash_height |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2987 - FRAME_INTERNAL_BORDER_WIDTH (f)), |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2988 width, flash_height); |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2989 } |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2990 else |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
2991 /* If it is short, flash it all. */ |
|
16352
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2992 XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), gc, |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2993 flash_left, FRAME_INTERNAL_BORDER_WIDTH (f), |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2994 width, height - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)); |
|
dfe3713f8c75
(XTflash): Don't flash in the internal borders.
Richard M. Stallman <rms@gnu.org>
parents:
16330
diff
changeset
|
2995 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
2996 XFreeGC (FRAME_X_DISPLAY (f), gc); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
2997 x_flush (f); |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2998 } |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
2999 } |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3000 |
| 286 | 3001 UNBLOCK_INPUT; |
| 3002 } | |
| 3003 | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3004 #endif /* defined (HAVE_TIMEVAL) && defined (HAVE_SELECT) */ |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3005 |
| 286 | 3006 |
| 3007 /* Make audible bell. */ | |
| 3008 | |
| 21514 | 3009 void |
| 286 | 3010 XTring_bell () |
| 3011 { | |
|
25682
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3012 struct frame *f = SELECTED_FRAME (); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3013 |
|
25682
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3014 if (FRAME_X_DISPLAY (f)) |
|
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3015 { |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
3016 #if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT) |
|
25682
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3017 if (visible_bell) |
|
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3018 XTflash (f); |
|
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3019 else |
|
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3020 #endif |
|
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3021 { |
|
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3022 BLOCK_INPUT; |
|
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3023 XBell (FRAME_X_DISPLAY (f), 0); |
|
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3024 XFlush (FRAME_X_DISPLAY (f)); |
|
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3025 UNBLOCK_INPUT; |
|
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3026 } |
| 286 | 3027 } |
| 3028 } | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3029 |
| 286 | 3030 |
| 3031 /* Specify how many text lines, from the top of the window, | |
| 3032 should be affected by insert-lines and delete-lines operations. | |
| 3033 This, and those operations, are used only within an update | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3034 that is bounded by calls to x_update_begin and x_update_end. */ |
| 286 | 3035 |
| 21514 | 3036 static void |
| 286 | 3037 XTset_terminal_window (n) |
| 3038 register int n; | |
| 3039 { | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3040 /* This function intentionally left blank. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3041 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3042 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3043 |
| 286 | 3044 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3045 /*********************************************************************** |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3046 Line Dance |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3047 ***********************************************************************/ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3048 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3049 /* Perform an insert-lines or delete-lines operation, inserting N |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3050 lines or deleting -N lines at vertical position VPOS. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3051 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3052 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3053 x_ins_del_lines (vpos, n) |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3054 int vpos, n; |
| 286 | 3055 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3056 abort (); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3057 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3058 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3059 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3060 /* Scroll part of the display as described by RUN. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3061 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3062 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3063 x_scroll_run (w, run) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3064 struct window *w; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3065 struct run *run; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3066 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3067 struct frame *f = XFRAME (w->frame); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3068 int x, y, width, height, from_y, to_y, bottom_y; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3069 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3070 /* Get frame-relative bounding box of the text display area of W, |
| 41134 | 3071 without mode lines. Include in this box the left and right |
| 3072 fringe of W. */ | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3073 window_box (w, -1, &x, &y, &width, &height); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3074 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3075 from_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->current_y); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3076 to_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->desired_y); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3077 bottom_y = y + height; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3078 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3079 if (to_y < from_y) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3080 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3081 /* Scrolling up. Make sure we don't copy part of the mode |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3082 line at the bottom. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3083 if (from_y + run->height > bottom_y) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3084 height = bottom_y - from_y; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3085 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3086 height = run->height; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3087 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3088 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3089 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3090 /* Scolling down. Make sure we don't copy over the mode line. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3091 at the bottom. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3092 if (to_y + run->height > bottom_y) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3093 height = bottom_y - to_y; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3094 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3095 height = run->height; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3096 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3097 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3098 BLOCK_INPUT; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3099 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3100 /* Cursor off. Will be switched on again in x_update_window_end. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3101 updated_window = w; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3102 x_clear_cursor (w); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3103 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3104 XCopyArea (FRAME_X_DISPLAY (f), |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3105 FRAME_X_WINDOW (f), FRAME_X_WINDOW (f), |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3106 f->output_data.x->normal_gc, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3107 x, from_y, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3108 width, height, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3109 x, to_y); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3110 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3111 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3112 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3113 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3114 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3115 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3116 /*********************************************************************** |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3117 Exposure Events |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3118 ***********************************************************************/ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3119 |
| 286 | 3120 |
| 3121 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
|
3122 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
|
3123 struct frame *f; |
| 286 | 3124 { |
|
3943
cbdf67dd68d0
* xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents:
3938
diff
changeset
|
3125 /* 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
|
3126 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
|
3127 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
|
3128 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
|
3129 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
|
3130 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
|
3131 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
|
3132 UNBLOCK_INPUT; |
|
12431
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
3133 x_update_cursor (f, 1); |
| 286 | 3134 } |
| 3135 | |
| 3136 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
|
3137 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
|
3138 struct frame *f; |
| 286 | 3139 { |
|
3943
cbdf67dd68d0
* xterm.c (frame_highlight, frame_unhighlight): Don't test
Jim Blandy <jimb@redhat.com>
parents:
3938
diff
changeset
|
3140 /* 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
|
3141 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
|
3142 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
|
3143 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
|
3144 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
|
3145 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
|
3146 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
|
3147 UNBLOCK_INPUT; |
|
12431
80a5aedfb4c7
(XTread_socket): Turn off meta, super, hyper and alt bits
Richard M. Stallman <rms@gnu.org>
parents:
12192
diff
changeset
|
3148 x_update_cursor (f, 1); |
| 286 | 3149 } |
| 3150 | |
| 771 | 3151 /* The focus has changed. Update the frames as necessary to reflect |
| 3152 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
|
3153 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
|
3154 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
|
3155 Lisp code can tell when the switch took place by examining the events. */ |
| 369 | 3156 |
| 3157 static void | |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3158 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
|
3159 struct x_display_info *dpyinfo; |
| 771 | 3160 struct frame *frame; |
| 286 | 3161 { |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3162 struct frame *old_focus = dpyinfo->x_focus_frame; |
| 286 | 3163 |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3164 if (frame != dpyinfo->x_focus_frame) |
| 286 | 3165 { |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3166 /* Set this before calling other routines, so that they see |
| 771 | 3167 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
|
3168 dpyinfo->x_focus_frame = frame; |
| 369 | 3169 |
| 3170 if (old_focus && old_focus->auto_lower) | |
| 771 | 3171 x_lower_frame (old_focus); |
| 286 | 3172 |
| 3173 #if 0 | |
| 771 | 3174 selected_frame = frame; |
|
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
3175 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
|
3176 selected_frame); |
|
51048
7ac9c3bea5ea
(Fselect_window): Add optional arg `norecord'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50521
diff
changeset
|
3177 Fselect_window (selected_frame->selected_window, Qnil); |
| 771 | 3178 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
|
3179 #endif /* ! 0 */ |
| 286 | 3180 |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3181 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
|
3182 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
|
3183 else |
|
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
3184 pending_autoraise_frame = 0; |
| 369 | 3185 } |
| 3186 | |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3187 x_frame_rehighlight (dpyinfo); |
| 369 | 3188 } |
| 3189 | |
|
46076
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3190 /* Handle FocusIn and FocusOut state changes for FRAME. |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3191 If FRAME has focus and there exists more than one frame, puts |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3192 a FOCUS_IN_EVENT into *BUFP. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3193 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3194 static void |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3195 x_focus_changed (type, state, dpyinfo, frame, bufp) |
|
46076
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3196 int type; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3197 int state; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3198 struct x_display_info *dpyinfo; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3199 struct frame *frame; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3200 struct input_event *bufp; |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3201 { |
|
46076
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3202 if (type == FocusIn) |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3203 { |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3204 if (dpyinfo->x_focus_event_frame != frame) |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3205 { |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3206 x_new_focus_frame (dpyinfo, frame); |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3207 dpyinfo->x_focus_event_frame = frame; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3208 |
|
46076
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3209 /* Don't stop displaying the initial startup message |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3210 for a switch-frame event we don't need. */ |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3211 if (GC_NILP (Vterminal_frame) |
|
46076
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3212 && GC_CONSP (Vframe_list) |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3213 && !GC_NILP (XCDR (Vframe_list))) |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3214 { |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3215 bufp->kind = FOCUS_IN_EVENT; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3216 XSETFRAME (bufp->frame_or_window, frame); |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3217 } |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3218 } |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3219 |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3220 frame->output_data.x->focus_state |= state; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3221 |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3222 #ifdef HAVE_X_I18N |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3223 if (FRAME_XIC (frame)) |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3224 XSetICFocus (FRAME_XIC (frame)); |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3225 #endif |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3226 } |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3227 else if (type == FocusOut) |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3228 { |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3229 frame->output_data.x->focus_state &= ~state; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3230 |
|
46076
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3231 if (dpyinfo->x_focus_event_frame == frame) |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3232 { |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3233 dpyinfo->x_focus_event_frame = 0; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3234 x_new_focus_frame (dpyinfo, 0); |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3235 } |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3236 |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3237 #ifdef HAVE_X_I18N |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3238 if (FRAME_XIC (frame)) |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3239 XUnsetICFocus (FRAME_XIC (frame)); |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3240 #endif |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3241 } |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3242 } |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3243 |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3244 /* The focus may have changed. Figure out if it is a real focus change, |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3245 by checking both FocusIn/Out and Enter/LeaveNotify events. |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3246 |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3247 Returns FOCUS_IN_EVENT event in *BUFP. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3248 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3249 static void |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3250 x_detect_focus_change (dpyinfo, event, bufp) |
|
46076
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3251 struct x_display_info *dpyinfo; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3252 XEvent *event; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3253 struct input_event *bufp; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3254 { |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3255 struct frame *frame; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3256 |
|
50021
b5ec65424fcc
* xterm.c (x_detect_focus_change): Call x_any_window_to_frame
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49859
diff
changeset
|
3257 frame = x_any_window_to_frame (dpyinfo, event->xany.window); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3258 if (! frame) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3259 return; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3260 |
|
46076
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3261 switch (event->type) |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3262 { |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3263 case EnterNotify: |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3264 case LeaveNotify: |
|
53061
4835b200fafe
* xterm.c (x_detect_focus_change): Do not change focus frame for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53038
diff
changeset
|
3265 { |
|
4835b200fafe
* xterm.c (x_detect_focus_change): Do not change focus frame for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53038
diff
changeset
|
3266 struct frame *focus_frame = dpyinfo->x_focus_event_frame; |
|
4835b200fafe
* xterm.c (x_detect_focus_change): Do not change focus frame for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53038
diff
changeset
|
3267 int focus_state |
|
4835b200fafe
* xterm.c (x_detect_focus_change): Do not change focus frame for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53038
diff
changeset
|
3268 = focus_frame ? focus_frame->output_data.x->focus_state : 0; |
|
4835b200fafe
* xterm.c (x_detect_focus_change): Do not change focus frame for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53038
diff
changeset
|
3269 |
|
4835b200fafe
* xterm.c (x_detect_focus_change): Do not change focus frame for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53038
diff
changeset
|
3270 if (event->xcrossing.detail != NotifyInferior |
|
4835b200fafe
* xterm.c (x_detect_focus_change): Do not change focus frame for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53038
diff
changeset
|
3271 && event->xcrossing.focus |
|
4835b200fafe
* xterm.c (x_detect_focus_change): Do not change focus frame for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53038
diff
changeset
|
3272 && ! (focus_state & FOCUS_EXPLICIT)) |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3273 x_focus_changed ((event->type == EnterNotify ? FocusIn : FocusOut), |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3274 FOCUS_IMPLICIT, |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3275 dpyinfo, frame, bufp); |
|
53061
4835b200fafe
* xterm.c (x_detect_focus_change): Do not change focus frame for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53038
diff
changeset
|
3276 } |
|
46076
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3277 break; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3278 |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3279 case FocusIn: |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3280 case FocusOut: |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3281 x_focus_changed (event->type, |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3282 (event->xfocus.detail == NotifyPointer ? |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3283 FOCUS_IMPLICIT : FOCUS_EXPLICIT), |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3284 dpyinfo, frame, bufp); |
|
46076
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3285 break; |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3286 } |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3287 } |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3288 |
|
819af351608b
(x_focus_changed): New function.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
45986
diff
changeset
|
3289 |
|
10223
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
3290 /* 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
|
3291 |
|
97fc8c6b4a74
(XTupdate_begin): Discard records of prior mouse highlight
Richard M. Stallman <rms@gnu.org>
parents:
9823
diff
changeset
|
3292 void |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3293 x_mouse_leave (dpyinfo) |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3294 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
|
3295 { |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3296 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
|
3297 } |
| 369 | 3298 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3299 /* 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
|
3300 another frame (this happens when a frame uses a surrogate |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3301 mini-buffer frame). Shift the highlight as appropriate. |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3302 |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3303 The FRAME argument doesn't necessarily have anything to do with which |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3304 frame is being highlighted or un-highlighted; we only use it to find |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3305 the appropriate X display info. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3306 |
| 369 | 3307 static void |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3308 XTframe_rehighlight (frame) |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3309 struct frame *frame; |
| 369 | 3310 { |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3311 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
|
3312 } |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3313 |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3314 static void |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3315 x_frame_rehighlight (dpyinfo) |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3316 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
|
3317 { |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3318 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
|
3319 |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3320 if (dpyinfo->x_focus_frame) |
| 286 | 3321 { |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3322 dpyinfo->x_highlight_frame |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3323 = ((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
|
3324 ? 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
|
3325 : dpyinfo->x_focus_frame); |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3326 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
|
3327 { |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3328 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
|
3329 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
|
3330 } |
| 286 | 3331 } |
| 369 | 3332 else |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3333 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
|
3334 |
|
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
3335 if (dpyinfo->x_highlight_frame != old_highlight) |
| 369 | 3336 { |
| 3337 if (old_highlight) | |
| 771 | 3338 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
|
3339 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
|
3340 frame_highlight (dpyinfo->x_highlight_frame); |
| 369 | 3341 } |
| 286 | 3342 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3343 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3344 |
| 286 | 3345 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3346 /* Keyboard processing - modifier keys, vendor-specific keysyms, etc. */ |
| 286 | 3347 |
|
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3348 /* 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
|
3349 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
|
3350 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
|
3351 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
|
3352 { |
|
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3353 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
|
3354 KeySym *syms; |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3355 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
|
3356 XModifierKeymap *mods; |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3357 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3358 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
|
3359 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
|
3360 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
|
3361 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
|
3362 dpyinfo->hyper_mod_mask = 0; |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3363 |
|
2127
adaf588e32a6
* xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents:
2064
diff
changeset
|
3364 #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
|
3365 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
|
3366 #else |
|
13884
26245345f6f1
(x_find_modifier_meanings): Fix !X11R4 code to use dpyinfo.
Richard M. Stallman <rms@gnu.org>
parents:
13782
diff
changeset
|
3367 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
|
3368 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
|
3369 #endif |
|
adaf588e32a6
* xterm.c (x_find_modifier_meanings): XDisplayKeycodes only
Jim Blandy <jimb@redhat.com>
parents:
2064
diff
changeset
|
3370 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3371 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
|
3372 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
|
3373 &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
|
3374 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
|
3375 |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3376 /* 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
|
3377 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
|
3378 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3379 int row, col; /* The row and column in the modifier table. */ |
|
57333
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3380 int found_alt_or_meta; |
|
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3381 |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3382 for (row = 3; row < 8; row++) |
|
57333
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3383 { |
|
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3384 found_alt_or_meta = 0; |
|
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3385 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
|
3386 { |
|
57333
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3387 KeyCode code = 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
|
3388 |
|
6560
a071babfa9ea
(x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents:
6521
diff
changeset
|
3389 /* Zeroes are used for filler. Skip them. */ |
|
a071babfa9ea
(x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents:
6521
diff
changeset
|
3390 if (code == 0) |
|
a071babfa9ea
(x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents:
6521
diff
changeset
|
3391 continue; |
|
a071babfa9ea
(x_find_modifier_meanings): Skip zero entries.
Karl Heuer <kwzh@gnu.org>
parents:
6521
diff
changeset
|
3392 |
|
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3393 /* 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
|
3394 { |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3395 int code_col; |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3396 |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3397 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
|
3398 { |
|
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3399 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
|
3400 |
|
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3401 switch (sym) |
|
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3402 { |
|
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3403 case XK_Meta_L: |
|
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3404 case XK_Meta_R: |
|
57333
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3405 found_alt_or_meta = 1; |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3406 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
|
3407 break; |
|
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3408 |
|
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3409 case XK_Alt_L: |
|
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3410 case XK_Alt_R: |
|
57333
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3411 found_alt_or_meta = 1; |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3412 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
|
3413 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
|
3414 |
|
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
|
3415 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
|
3416 case XK_Hyper_R: |
|
57333
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3417 if (!found_alt_or_meta) |
|
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3418 dpyinfo->hyper_mod_mask |= (1 << row); |
|
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3419 code_col = syms_per_code; |
|
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3420 col = mods->max_keypermod; |
|
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
|
3421 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
|
3422 |
|
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
|
3423 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
|
3424 case XK_Super_R: |
|
57333
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3425 if (!found_alt_or_meta) |
|
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3426 dpyinfo->super_mod_mask |= (1 << row); |
|
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3427 code_col = syms_per_code; |
|
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3428 col = mods->max_keypermod; |
|
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3429 break; |
|
1436
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
3430 |
|
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
3431 case XK_Shift_Lock: |
|
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
3432 /* Ignore this if it's not on the lock modifier. */ |
|
57333
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3433 if (!found_alt_or_meta && ((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
|
3434 dpyinfo->shift_lock_mask = LockMask; |
|
57333
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3435 code_col = syms_per_code; |
|
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3436 col = mods->max_keypermod; |
|
1436
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
3437 break; |
|
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3438 } |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3439 } |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3440 } |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3441 } |
|
57333
3bce830e4b33
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57315
diff
changeset
|
3442 } |
|
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3443 } |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3444 |
|
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3445 /* 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
|
3446 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
|
3447 { |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3448 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
|
3449 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
|
3450 } |
|
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3451 |
|
2923
c8997402dd6b
(x_find_modifier_meanings): If some keys are meta and alt,
Richard M. Stallman <rms@gnu.org>
parents:
2882
diff
changeset
|
3452 /* 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
|
3453 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
|
3454 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
|
3455 { |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3456 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
|
3457 } |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3458 |
|
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3459 XFree ((char *) syms); |
|
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3460 XFreeModifiermap (mods); |
|
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3461 } |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
3462 |
|
2661
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
3463 /* 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
|
3464 Emacs uses. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3465 |
|
1530
a7f8a1fe258e
* xterm.c (x_convert_modifiers): Declare this to return an
Jim Blandy <jimb@redhat.com>
parents:
1436
diff
changeset
|
3466 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
|
3467 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
|
3468 struct x_display_info *dpyinfo; |
| 286 | 3469 unsigned int state; |
| 3470 { | |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3471 EMACS_UINT mod_meta = meta_modifier; |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3472 EMACS_UINT mod_alt = alt_modifier; |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3473 EMACS_UINT mod_hyper = hyper_modifier; |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3474 EMACS_UINT mod_super = super_modifier; |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3475 Lisp_Object tem; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3476 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3477 tem = Fget (Vx_alt_keysym, Qmodifier_value); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3478 if (! EQ (tem, Qnil)) mod_alt = XUINT (tem); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3479 tem = Fget (Vx_meta_keysym, Qmodifier_value); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3480 if (! EQ (tem, Qnil)) mod_meta = XUINT (tem); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3481 tem = Fget (Vx_hyper_keysym, Qmodifier_value); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3482 if (! EQ (tem, Qnil)) mod_hyper = XUINT (tem); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3483 tem = Fget (Vx_super_keysym, Qmodifier_value); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3484 if (! EQ (tem, Qnil)) mod_super = XUINT (tem); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3485 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3486 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3487 return ( ((state & (ShiftMask | dpyinfo->shift_lock_mask)) ? shift_modifier : 0) |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3488 | ((state & ControlMask) ? ctrl_modifier : 0) |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3489 | ((state & dpyinfo->meta_mod_mask) ? mod_meta : 0) |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3490 | ((state & dpyinfo->alt_mod_mask) ? mod_alt : 0) |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3491 | ((state & dpyinfo->super_mod_mask) ? mod_super : 0) |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3492 | ((state & dpyinfo->hyper_mod_mask) ? mod_hyper : 0)); |
| 286 | 3493 } |
| 3494 | |
|
2661
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
3495 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
|
3496 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
|
3497 struct x_display_info *dpyinfo; |
|
2661
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
3498 unsigned int state; |
|
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
3499 { |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3500 EMACS_UINT mod_meta = meta_modifier; |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3501 EMACS_UINT mod_alt = alt_modifier; |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3502 EMACS_UINT mod_hyper = hyper_modifier; |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3503 EMACS_UINT mod_super = super_modifier; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3504 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3505 Lisp_Object tem; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3506 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3507 tem = Fget (Vx_alt_keysym, Qmodifier_value); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3508 if (! EQ (tem, Qnil)) mod_alt = XUINT (tem); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3509 tem = Fget (Vx_meta_keysym, Qmodifier_value); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3510 if (! EQ (tem, Qnil)) mod_meta = XUINT (tem); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3511 tem = Fget (Vx_hyper_keysym, Qmodifier_value); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3512 if (! EQ (tem, Qnil)) mod_hyper = XUINT (tem); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3513 tem = Fget (Vx_super_keysym, Qmodifier_value); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3514 if (! EQ (tem, Qnil)) mod_super = XUINT (tem); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3515 |
|
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3516 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3517 return ( ((state & mod_alt) ? dpyinfo->alt_mod_mask : 0) |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3518 | ((state & mod_super) ? dpyinfo->super_mod_mask : 0) |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3519 | ((state & mod_hyper) ? dpyinfo->hyper_mod_mask : 0) |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3520 | ((state & shift_modifier) ? ShiftMask : 0) |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3521 | ((state & ctrl_modifier) ? ControlMask : 0) |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
3522 | ((state & mod_meta) ? dpyinfo->meta_mod_mask : 0)); |
|
2661
77f1457d000e
Implement extra_keyboard_modifiers properly.
Jim Blandy <jimb@redhat.com>
parents:
2474
diff
changeset
|
3523 } |
|
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3524 |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3525 /* Convert a keysym to its name. */ |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3526 |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3527 char * |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3528 x_get_keysym_name (keysym) |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3529 KeySym keysym; |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3530 { |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3531 char *value; |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3532 |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3533 BLOCK_INPUT; |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3534 value = XKeysymToString (keysym); |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3535 UNBLOCK_INPUT; |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3536 |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3537 return value; |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
3538 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3539 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3540 |
|
3585
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
3541 |
|
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
3542 /* Mouse clicks and mouse movement. Rah. */ |
|
19aab2d09a4d
* xterm.c (x_is_vendor_fkey): New function.
Jim Blandy <jimb@redhat.com>
parents:
3558
diff
changeset
|
3543 |
| 286 | 3544 /* Prepare a mouse-event in *RESULT for placement in the input queue. |
| 3545 | |
| 3546 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
|
3547 the mouse. */ |
| 286 | 3548 |
| 3549 static Lisp_Object | |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3550 construct_mouse_click (result, event, f) |
| 286 | 3551 struct input_event *result; |
| 3552 XButtonEvent *event; | |
| 771 | 3553 struct frame *f; |
| 286 | 3554 { |
|
45803
9484de301252
Rename enum event_kind items.
Pavel Jan?k <Pavel@Janik.cz>
parents:
45563
diff
changeset
|
3555 /* Make the event type NO_EVENT; we'll change that when we decide |
| 286 | 3556 otherwise. */ |
|
45803
9484de301252
Rename enum event_kind items.
Pavel Jan?k <Pavel@Janik.cz>
parents:
45563
diff
changeset
|
3557 result->kind = MOUSE_CLICK_EVENT; |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3558 result->code = event->button - Button1; |
| 708 | 3559 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
|
3560 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
|
3561 event->state) |
|
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3562 | (event->type == ButtonRelease |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3563 ? up_modifier |
|
1324
44215417cf6e
* xterm.c (x_find_modifier_meanings): If there are no
Jim Blandy <jimb@redhat.com>
parents:
1279
diff
changeset
|
3564 : down_modifier)); |
| 286 | 3565 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3566 XSETINT (result->x, event->x); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3567 XSETINT (result->y, event->y); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3568 XSETFRAME (result->frame_or_window, f); |
|
30197
3237a5529020
(construct_mouse_click, x_scroll_bar_to_input_event)
Gerd Moellmann <gerd@gnu.org>
parents:
30182
diff
changeset
|
3569 result->arg = Qnil; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3570 return Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3571 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3572 |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3573 |
| 429 | 3574 /* Function to report a mouse movement to the mainstream Emacs code. |
| 3575 The input handler calls this. | |
| 3576 | |
| 3577 We have received a mouse movement event, which is given in *event. | |
| 3578 If the mouse is over a different glyph than it was last time, tell | |
| 3579 the mainstream emacs code by setting mouse_moved. If not, ask for | |
| 3580 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
|
3581 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3582 static XMotionEvent last_mouse_motion_event; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3583 static Lisp_Object last_mouse_motion_frame; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3584 |
|
65985
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3585 static void remember_mouse_glyph P_ ((struct frame *, int, int)); |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3586 |
| 429 | 3587 static void |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3588 note_mouse_movement (frame, event) |
| 771 | 3589 FRAME_PTR frame; |
| 429 | 3590 XMotionEvent *event; |
| 3591 { | |
| 732 | 3592 last_mouse_movement_time = event->time; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3593 last_mouse_motion_event = *event; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3594 XSETFRAME (last_mouse_motion_frame, frame); |
| 732 | 3595 |
|
7680
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
3596 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
|
3597 { |
|
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
3598 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
|
3599 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
|
3600 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
|
3601 } |
|
8212755ff793
(note_mouse_movement): Use frame's window in XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
7651
diff
changeset
|
3602 |
| 429 | 3603 /* 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
|
3604 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
|
3605 || 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
|
3606 || 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
|
3607 || 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
|
3608 { |
|
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
3609 frame->mouse_moved = 1; |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3610 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
|
3611 note_mouse_highlight (frame, event->x, event->y); |
|
65985
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3612 /* Remember which glyph we're now on. */ |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3613 remember_mouse_glyph (frame, event->x, event->y); |
| 429 | 3614 } |
| 3615 } | |
| 3616 | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3617 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3618 /************************************************************************ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3619 Mouse Face |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3620 ************************************************************************/ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3621 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3622 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3623 redo_mouse_highlight () |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3624 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3625 if (!NILP (last_mouse_motion_frame) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3626 && FRAME_LIVE_P (XFRAME (last_mouse_motion_frame))) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3627 note_mouse_highlight (XFRAME (last_mouse_motion_frame), |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3628 last_mouse_motion_event.x, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3629 last_mouse_motion_event.y); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3630 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3631 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3632 |
|
36492
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3633 static int glyph_rect P_ ((struct frame *f, int, int, XRectangle *)); |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3634 |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3635 |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3636 /* Try to determine frame pixel position and size of the glyph under |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3637 frame pixel coordinates X/Y on frame F . Return the position and |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3638 size in *RECT. Value is non-zero if we could compute these |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3639 values. */ |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3640 |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3641 static int |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3642 glyph_rect (f, x, y, rect) |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3643 struct frame *f; |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3644 int x, y; |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3645 XRectangle *rect; |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3646 { |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3647 Lisp_Object window; |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3648 struct window *w; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3649 struct glyph_row *r, *end_row; |
|
66003
eefcdbee90bc
(glyph_rect): Return 0 if position is outside text area.
Kim F. Storm <storm@cua.dk>
parents:
65985
diff
changeset
|
3650 enum window_part part; |
|
eefcdbee90bc
(glyph_rect): Return 0 if position is outside text area.
Kim F. Storm <storm@cua.dk>
parents:
65985
diff
changeset
|
3651 |
|
eefcdbee90bc
(glyph_rect): Return 0 if position is outside text area.
Kim F. Storm <storm@cua.dk>
parents:
65985
diff
changeset
|
3652 window = window_from_coordinates (f, x, y, &part, &x, &y, 0); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3653 if (NILP (window)) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3654 return 0; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3655 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3656 w = XWINDOW (window); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3657 r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3658 end_row = r + w->current_matrix->nrows - 1; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3659 |
|
66003
eefcdbee90bc
(glyph_rect): Return 0 if position is outside text area.
Kim F. Storm <storm@cua.dk>
parents:
65985
diff
changeset
|
3660 if (part != ON_TEXT) |
|
eefcdbee90bc
(glyph_rect): Return 0 if position is outside text area.
Kim F. Storm <storm@cua.dk>
parents:
65985
diff
changeset
|
3661 return 0; |
|
eefcdbee90bc
(glyph_rect): Return 0 if position is outside text area.
Kim F. Storm <storm@cua.dk>
parents:
65985
diff
changeset
|
3662 |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3663 for (; r < end_row && r->enabled_p; ++r) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3664 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3665 if (r->y >= y) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3666 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3667 struct glyph *g = r->glyphs[TEXT_AREA]; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3668 struct glyph *end = g + r->used[TEXT_AREA]; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3669 int gx = r->x; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3670 while (g < end && gx < x) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3671 gx += g->pixel_width, ++g; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3672 if (g < end) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3673 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3674 rect->width = g->pixel_width; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3675 rect->height = r->height; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3676 rect->x = WINDOW_TO_FRAME_PIXEL_X (w, gx); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3677 rect->y = WINDOW_TO_FRAME_PIXEL_Y (w, r->y); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3678 return 1; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3679 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3680 break; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3681 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3682 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3683 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
3684 return 0; |
|
36492
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3685 } |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3686 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3687 |
|
65985
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3688 /* Remember which glyph the mouse is over. |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3689 */ |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3690 static void |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3691 remember_mouse_glyph (f1, win_x, win_y) |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3692 FRAME_PTR f1; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3693 int win_x, win_y; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3694 { |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3695 int width, height, gx, gy; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3696 |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3697 /* Try getting the rectangle of the actual glyph. */ |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3698 if (!glyph_rect (f1, win_x, win_y, &last_mouse_glyph)) |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3699 { |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3700 /* If there is no glyph under the mouse, then we divide the screen |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3701 into a grid of the smallest glyph in the frame, and use that |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3702 as our "glyph". */ |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3703 width = FRAME_SMALLEST_CHAR_WIDTH (f1); |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3704 height = FRAME_SMALLEST_FONT_HEIGHT (f1); |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3705 gx = win_x; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3706 gy = win_y; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3707 |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3708 /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3709 round down even for negative values. */ |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3710 if (gx < 0) |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3711 gx -= width - 1; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3712 if (gy < 0) |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3713 gy -= height - 1; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3714 |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3715 gx = gx / width * width; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3716 gy = gy / width * width; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3717 |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3718 last_mouse_glyph.width = width; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3719 last_mouse_glyph.height = height; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3720 last_mouse_glyph.x = gx; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3721 last_mouse_glyph.y = gy; |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3722 } |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3723 } |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3724 |
|
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3725 |
| 429 | 3726 /* Return the current position of the mouse. |
|
36492
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3727 *FP should be a frame which indicates which display to ask about. |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3728 |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3729 If the mouse movement started in a scroll bar, set *FP, *BAR_WINDOW, |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3730 and *PART to the frame, window, and scroll bar part that the mouse |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3731 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
|
3732 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
|
3733 |
|
36492
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3734 If the mouse movement started elsewhere, set *FP to the frame the |
|
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3735 mouse is on, *BAR_WINDOW to nil, and *X and *Y to the character cell |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3736 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
|
3737 |
|
36492
da77079d6981
(glyph_rect): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
36475
diff
changeset
|
3738 Set *TIME to the server time-stamp for the time at which the mouse |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3739 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
|
3740 |
|
3669
fd4187a96445
(XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents:
3639
diff
changeset
|
3741 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
|
3742 |
| 429 | 3743 This clears the mouse_moved flag, so we can wait for the next mouse |
|
15042
c99dd01d9334
(note_mouse_movement): Don't call XQueryPointer.
Richard M. Stallman <rms@gnu.org>
parents:
14963
diff
changeset
|
3744 movement. */ |
| 429 | 3745 |
| 3746 static void | |
|
11122
ce63fb361ae9
(XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents:
11015
diff
changeset
|
3747 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
|
3748 FRAME_PTR *fp; |
|
11122
ce63fb361ae9
(XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents:
11015
diff
changeset
|
3749 int insist; |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3750 Lisp_Object *bar_window; |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3751 enum scroll_bar_part *part; |
| 429 | 3752 Lisp_Object *x, *y; |
| 732 | 3753 unsigned long *time; |
| 429 | 3754 { |
|
3669
fd4187a96445
(XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents:
3639
diff
changeset
|
3755 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
|
3756 |
| 429 | 3757 BLOCK_INPUT; |
| 3758 | |
|
20180
bfbf6a2939a3
(XTmouse_position): Handle INSIST < 0.
Karl Heuer <kwzh@gnu.org>
parents:
19447
diff
changeset
|
3759 if (! NILP (last_mouse_scroll_bar) && insist == 0) |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3760 x_scroll_bar_report_motion (fp, bar_window, part, x, y, time); |
| 429 | 3761 else |
| 3762 { | |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3763 Window root; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3764 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
|
3765 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3766 Window dummy_window; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3767 int dummy; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3768 |
|
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
3769 Lisp_Object frame, tail; |
|
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
3770 |
|
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
3771 /* 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
|
3772 FOR_EACH_FRAME (tail, frame) |
|
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
3773 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
|
3774 XFRAME (frame)->mouse_moved = 0; |
|
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
3775 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3776 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
|
3777 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3778 /* 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
|
3779 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
|
3780 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
|
3781 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3782 /* 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
|
3783 &root, |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3784 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3785 /* 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
|
3786 a different screen. */ |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3787 &dummy_window, |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3788 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3789 /* The position on that root window. */ |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3790 &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
|
3791 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3792 /* 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
|
3793 &dummy, &dummy, |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3794 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3795 /* 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
|
3796 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
|
3797 (unsigned int *) &dummy); |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3798 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3799 /* 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
|
3800 containing the pointer. */ |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3801 { |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3802 Window win, child; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3803 int win_x, win_y; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3804 int parent_x = 0, parent_y = 0; |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
3805 int count; |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3806 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3807 win = root; |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3808 |
|
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3809 /* 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
|
3810 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
|
3811 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
|
3812 |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
3813 count = x_catch_errors (FRAME_X_DISPLAY (*fp)); |
|
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3814 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3815 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
|
3816 && 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
|
3817 { |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3818 /* 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
|
3819 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
|
3820 XTranslateCoordinates (FRAME_X_DISPLAY (*fp), |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3821 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3822 /* From-window, to-window. */ |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3823 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
|
3824 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3825 /* 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
|
3826 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
|
3827 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3828 /* Child of win. */ |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3829 &child); |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3830 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
|
3831 } |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3832 else |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3833 { |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3834 while (1) |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3835 { |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
3836 XTranslateCoordinates (FRAME_X_DISPLAY (*fp), |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3837 |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3838 /* From-window, to-window. */ |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3839 root, win, |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3840 |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3841 /* From-position, to-position. */ |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3842 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
|
3843 |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3844 /* Child of win. */ |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3845 &child); |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3846 |
|
13627
8873aa3451dd
(XTmouse_position): Exit the loop if child == win.
Richard M. Stallman <rms@gnu.org>
parents:
13598
diff
changeset
|
3847 if (child == None || child == win) |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3848 break; |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3849 |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3850 win = child; |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3851 parent_x = win_x; |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3852 parent_y = win_y; |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3853 } |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3854 |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3855 /* Now we know that: |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3856 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
|
3857 (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
|
3858 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
|
3859 (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
|
3860 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
|
3861 (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
|
3862 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
|
3863 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
|
3864 never use them in that case.) */ |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3865 |
|
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3866 /* 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
|
3867 f1 = x_any_window_to_frame (FRAME_X_DISPLAY_INFO (*fp), win); |
|
34008
8702e88a1669
(XTmouse_position) [USE_X_TOOLKIT]: When the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
33958
diff
changeset
|
3868 |
|
8702e88a1669
(XTmouse_position) [USE_X_TOOLKIT]: When the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
33958
diff
changeset
|
3869 #ifdef USE_X_TOOLKIT |
|
8702e88a1669
(XTmouse_position) [USE_X_TOOLKIT]: When the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
33958
diff
changeset
|
3870 /* If we end up with the menu bar window, say it's not |
|
8702e88a1669
(XTmouse_position) [USE_X_TOOLKIT]: When the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
33958
diff
changeset
|
3871 on the frame. */ |
|
8702e88a1669
(XTmouse_position) [USE_X_TOOLKIT]: When the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
33958
diff
changeset
|
3872 if (f1 != NULL |
|
8702e88a1669
(XTmouse_position) [USE_X_TOOLKIT]: When the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
33958
diff
changeset
|
3873 && f1->output_data.x->menubar_widget |
|
8702e88a1669
(XTmouse_position) [USE_X_TOOLKIT]: When the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
33958
diff
changeset
|
3874 && win == XtWindow (f1->output_data.x->menubar_widget)) |
|
8702e88a1669
(XTmouse_position) [USE_X_TOOLKIT]: When the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
33958
diff
changeset
|
3875 f1 = NULL; |
|
8702e88a1669
(XTmouse_position) [USE_X_TOOLKIT]: When the mouse
Gerd Moellmann <gerd@gnu.org>
parents:
33958
diff
changeset
|
3876 #endif /* USE_X_TOOLKIT */ |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
3877 } |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
3878 |
|
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3879 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
|
3880 f1 = 0; |
|
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3881 |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
3882 x_uncatch_errors (FRAME_X_DISPLAY (*fp), count); |
|
11436
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
3883 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3884 /* 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
|
3885 if (! f1) |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3886 { |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
3887 struct scroll_bar *bar; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
3888 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
3889 bar = x_window_to_scroll_bar (FRAME_X_DISPLAY (*fp), win); |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3890 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3891 if (bar) |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3892 { |
|
3669
fd4187a96445
(XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents:
3639
diff
changeset
|
3893 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
|
3894 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
|
3895 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
|
3896 } |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3897 } |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3898 |
|
20180
bfbf6a2939a3
(XTmouse_position): Handle INSIST < 0.
Karl Heuer <kwzh@gnu.org>
parents:
19447
diff
changeset
|
3899 if (f1 == 0 && insist > 0) |
|
25682
f8543a6d88ca
(XTcursor_to): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25646
diff
changeset
|
3900 f1 = SELECTED_FRAME (); |
|
11122
ce63fb361ae9
(XTmouse_position): New arg `insist'.
Richard M. Stallman <rms@gnu.org>
parents:
11015
diff
changeset
|
3901 |
|
3669
fd4187a96445
(XTmouse_position): Don't set *f at all unless we win.
Richard M. Stallman <rms@gnu.org>
parents:
3639
diff
changeset
|
3902 if (f1) |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3903 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3904 /* Ok, we found a frame. Store all the values. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3905 last_mouse_glyph is a rectangle used to reduce the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3906 generation of mouse events. To not miss any motion |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3907 events, we must divide the frame into rectangles of the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3908 size of the smallest character that could be displayed |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3909 on it, i.e. into the same rectangles that matrices on |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3910 the frame are divided into. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3911 |
|
65985
42e5365826f1
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
65892
diff
changeset
|
3912 remember_mouse_glyph (f1, win_x, win_y); |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3913 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3914 *bar_window = Qnil; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3915 *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
|
3916 *fp = f1; |
|
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
3917 XSETINT (*x, win_x); |
|
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
3918 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
|
3919 *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
|
3920 } |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
3921 } |
| 429 | 3922 } |
| 3923 | |
| 3924 UNBLOCK_INPUT; | |
| 3925 } | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3926 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3927 |
| 429 | 3928 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
3929 /*********************************************************************** |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
3930 Scroll bars |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
3931 ***********************************************************************/ |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
3932 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3933 /* Scroll bar support. */ |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3934 |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
3935 /* Given an X window ID and a DISPLAY, find the struct scroll_bar which |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
3936 manages it. |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3937 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
|
3938 bits. */ |
|
27428
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
3939 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3940 static struct scroll_bar * |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
3941 x_window_to_scroll_bar (display, window_id) |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
3942 Display *display; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3943 Window window_id; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3944 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3945 Lisp_Object tail; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3946 |
|
57901
cdbca26f9090
* xterm.c (x_window_to_scroll_bar): Only call
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57633
diff
changeset
|
3947 #if defined (USE_GTK) && defined (USE_TOOLKIT_SCROLL_BARS) |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
3948 window_id = (Window) xg_get_scroll_id_for_window (display, window_id); |
|
57901
cdbca26f9090
* xterm.c (x_window_to_scroll_bar): Only call
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57633
diff
changeset
|
3949 #endif /* USE_GTK && USE_TOOLKIT_SCROLL_BARS */ |
|
50064
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
3950 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3951 for (tail = Vframe_list; |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3952 XGCTYPE (tail) == Lisp_Cons; |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
3953 tail = XCDR (tail)) |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3954 { |
|
6521
a975c5944916
(x_window_to_scroll_bar, x_new_font): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6413
diff
changeset
|
3955 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
|
3956 |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
3957 frame = XCAR (tail); |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3958 /* 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
|
3959 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
|
3960 abort (); |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3961 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3962 /* 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
|
3963 right window ID. */ |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3964 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
|
3965 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
|
3966 /* 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
|
3967 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
|
3968 ! GC_NILP (bar) || (bar = condemned, |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3969 condemned = Qnil, |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3970 ! 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
|
3971 bar = XSCROLL_BAR (bar)->next) |
|
53083
bf86de5f6d07
* xterm.c (x_window_to_scroll_bar): Move check of display to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53069
diff
changeset
|
3972 if (SCROLL_BAR_X_WINDOW (XSCROLL_BAR (bar)) == window_id && |
|
bf86de5f6d07
* xterm.c (x_window_to_scroll_bar): Move check of display to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53069
diff
changeset
|
3973 FRAME_X_DISPLAY (XFRAME (frame)) == display) |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
3974 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
|
3975 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3976 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3977 return 0; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3978 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
3979 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
3980 |
|
39671
45d46b88cdd1
USE_LUCID can be defined iff USE_X_TOOLKIT is defined.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39618
diff
changeset
|
3981 #if defined USE_LUCID |
|
37525
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3982 |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3983 /* Return the Lucid menu bar WINDOW is part of. Return null |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3984 if WINDOW is not part of a menu bar. */ |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3985 |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3986 static Widget |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3987 x_window_to_menu_bar (window) |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3988 Window window; |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3989 { |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3990 Lisp_Object tail; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3991 |
|
37525
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3992 for (tail = Vframe_list; |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3993 XGCTYPE (tail) == Lisp_Cons; |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3994 tail = XCDR (tail)) |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3995 { |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3996 Lisp_Object frame = XCAR (tail); |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3997 Widget menu_bar = XFRAME (frame)->output_data.x->menubar_widget; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
3998 |
|
37525
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
3999 if (menu_bar && xlwmenu_window_p (menu_bar, window)) |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
4000 return menu_bar; |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
4001 } |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
4002 |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
4003 return NULL; |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
4004 } |
|
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
4005 |
|
39671
45d46b88cdd1
USE_LUCID can be defined iff USE_X_TOOLKIT is defined.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39618
diff
changeset
|
4006 #endif /* USE_LUCID */ |
|
37525
3ae3b09f76a1
(x_window_to_menu_bar) [USE_LUCID]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37212
diff
changeset
|
4007 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4008 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4009 /************************************************************************ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4010 Toolkit scroll bars |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4011 ************************************************************************/ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4012 |
|
34066
2482c17f546e
Test USE_TOOLKIT_SCROLL_BARS everywhere with #ifdef and
Gerd Moellmann <gerd@gnu.org>
parents:
34030
diff
changeset
|
4013 #ifdef USE_TOOLKIT_SCROLL_BARS |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4014 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4015 static void x_scroll_bar_to_input_event P_ ((XEvent *, struct input_event *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4016 static void x_send_scroll_bar_event P_ ((Lisp_Object, int, int, int)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4017 static void x_create_toolkit_scroll_bar P_ ((struct frame *, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4018 struct scroll_bar *)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4019 static void x_set_toolkit_scroll_bar_thumb P_ ((struct scroll_bar *, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4020 int, int, int)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4021 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4022 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4023 /* Lisp window being scrolled. Set when starting to interact with |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4024 a toolkit scroll bar, reset to nil when ending the interaction. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4025 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4026 static Lisp_Object window_being_scrolled; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4027 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4028 /* Last scroll bar part sent in xm_scroll_callback. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4029 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4030 static int last_scroll_bar_part; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4031 |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4032 /* Whether this is an Xaw with arrow-scrollbars. This should imply |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4033 that movements of 1/20 of the screen size are mapped to up/down. */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4034 |
| 49322 | 4035 #ifndef USE_GTK |
| 4036 /* Id of action hook installed for scroll bars. */ | |
| 4037 | |
| 4038 static XtActionHookId action_hook_id; | |
| 4039 | |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4040 static Boolean xaw3d_arrow_scroll; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4041 |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4042 /* Whether the drag scrolling maintains the mouse at the top of the |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4043 thumb. If not, resizing the thumb needs to be done more carefully |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4044 to avoid jerkyness. */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4045 |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4046 static Boolean xaw3d_pick_top; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4047 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4048 /* Action hook installed via XtAppAddActionHook when toolkit scroll |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4049 bars are used.. The hook is responsible for detecting when |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4050 the user ends an interaction with the scroll bar, and generates |
|
45803
9484de301252
Rename enum event_kind items.
Pavel Jan?k <Pavel@Janik.cz>
parents:
45563
diff
changeset
|
4051 a `end-scroll' SCROLL_BAR_CLICK_EVENT' event if so. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4052 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4053 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4054 xt_action_hook (widget, client_data, action_name, event, params, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4055 num_params) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4056 Widget widget; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4057 XtPointer client_data; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4058 String action_name; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4059 XEvent *event; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4060 String *params; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4061 Cardinal *num_params; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4062 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4063 int scroll_bar_p; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4064 char *end_action; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4065 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4066 #ifdef USE_MOTIF |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4067 scroll_bar_p = XmIsScrollBar (widget); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4068 end_action = "Release"; |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4069 #else /* !USE_MOTIF i.e. use Xaw */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4070 scroll_bar_p = XtIsSubclass (widget, scrollbarWidgetClass); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4071 end_action = "EndScroll"; |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4072 #endif /* USE_MOTIF */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4073 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4074 if (scroll_bar_p |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4075 && strcmp (action_name, end_action) == 0 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4076 && WINDOWP (window_being_scrolled)) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4077 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4078 struct window *w; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4079 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4080 x_send_scroll_bar_event (window_being_scrolled, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4081 scroll_bar_end_scroll, 0, 0); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4082 w = XWINDOW (window_being_scrolled); |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
4083 |
|
50324
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
4084 if (!NILP (XSCROLL_BAR (w->vertical_scroll_bar)->dragging)) |
|
50327
f139cd7e1d62
(xt_action_hook): Unset dragging so the reset does take place.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50326
diff
changeset
|
4085 { |
|
f139cd7e1d62
(xt_action_hook): Unset dragging so the reset does take place.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50326
diff
changeset
|
4086 XSCROLL_BAR (w->vertical_scroll_bar)->dragging = Qnil; |
|
f139cd7e1d62
(xt_action_hook): Unset dragging so the reset does take place.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50326
diff
changeset
|
4087 /* The thumb size is incorrect while dragging: fix it. */ |
|
f139cd7e1d62
(xt_action_hook): Unset dragging so the reset does take place.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50326
diff
changeset
|
4088 set_vertical_scroll_bar (w); |
|
f139cd7e1d62
(xt_action_hook): Unset dragging so the reset does take place.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50326
diff
changeset
|
4089 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4090 window_being_scrolled = Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4091 last_scroll_bar_part = -1; |
|
27428
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
4092 |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
4093 /* Xt timeouts no longer needed. */ |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
4094 toolkit_scroll_bar_interaction = 0; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4095 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4096 } |
| 49322 | 4097 #endif /* not USE_GTK */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4098 |
|
33643
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4099 /* A vector of windows used for communication between |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4100 x_send_scroll_bar_event and x_scroll_bar_to_input_event. */ |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4101 |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4102 static struct window **scroll_bar_windows; |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4103 static int scroll_bar_windows_size; |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4104 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4105 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4106 /* Send a client message with message type Xatom_Scrollbar for a |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4107 scroll action to the frame of WINDOW. PART is a value identifying |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4108 the part of the scroll bar that was clicked on. PORTION is the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4109 amount to scroll of a whole of WHOLE. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4110 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4111 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4112 x_send_scroll_bar_event (window, part, portion, whole) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4113 Lisp_Object window; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4114 int part, portion, whole; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4115 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4116 XEvent event; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4117 XClientMessageEvent *ev = (XClientMessageEvent *) &event; |
|
33643
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4118 struct window *w = XWINDOW (window); |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4119 struct frame *f = XFRAME (w->frame); |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4120 int i; |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4121 |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4122 BLOCK_INPUT; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4123 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4124 /* Construct a ClientMessage event to send to the frame. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4125 ev->type = ClientMessage; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4126 ev->message_type = FRAME_X_DISPLAY_INFO (f)->Xatom_Scrollbar; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4127 ev->display = FRAME_X_DISPLAY (f); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4128 ev->window = FRAME_X_WINDOW (f); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4129 ev->format = 32; |
|
33643
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4130 |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4131 /* We can only transfer 32 bits in the XClientMessageEvent, which is |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4132 not enough to store a pointer or Lisp_Object on a 64 bit system. |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4133 So, store the window in scroll_bar_windows and pass the index |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4134 into that array in the event. */ |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4135 for (i = 0; i < scroll_bar_windows_size; ++i) |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4136 if (scroll_bar_windows[i] == NULL) |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4137 break; |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4138 |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4139 if (i == scroll_bar_windows_size) |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4140 { |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4141 int new_size = max (10, 2 * scroll_bar_windows_size); |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4142 size_t nbytes = new_size * sizeof *scroll_bar_windows; |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4143 size_t old_nbytes = scroll_bar_windows_size * sizeof *scroll_bar_windows; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4144 |
|
33643
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4145 scroll_bar_windows = (struct window **) xrealloc (scroll_bar_windows, |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4146 nbytes); |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4147 bzero (&scroll_bar_windows[i], nbytes - old_nbytes); |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4148 scroll_bar_windows_size = new_size; |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4149 } |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4150 |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4151 scroll_bar_windows[i] = w; |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4152 ev->data.l[0] = (long) i; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4153 ev->data.l[1] = (long) part; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4154 ev->data.l[2] = (long) 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4155 ev->data.l[3] = (long) portion; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4156 ev->data.l[4] = (long) whole; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4157 |
|
27428
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
4158 /* Make Xt timeouts work while the scroll bar is active. */ |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
4159 toolkit_scroll_bar_interaction = 1; |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
4160 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4161 /* Setting the event mask to zero means that the message will |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4162 be sent to the client that created the window, and if that |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4163 window no longer exists, no event will be sent. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4164 XSendEvent (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), False, 0, &event); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4165 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4166 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4167 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4168 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4169 /* Transform a scroll bar ClientMessage EVENT to an Emacs input event |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4170 in *IEVENT. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4171 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4172 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4173 x_scroll_bar_to_input_event (event, ievent) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4174 XEvent *event; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4175 struct input_event *ievent; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4176 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4177 XClientMessageEvent *ev = (XClientMessageEvent *) event; |
|
29717
acaa36b47f50
fix up more Lisp_Object/int conversion issues
Ken Raeburn <raeburn@raeburn.org>
parents:
29619
diff
changeset
|
4178 Lisp_Object window; |
|
acaa36b47f50
fix up more Lisp_Object/int conversion issues
Ken Raeburn <raeburn@raeburn.org>
parents:
29619
diff
changeset
|
4179 struct frame *f; |
|
33643
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4180 struct window *w; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4181 |
|
33643
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4182 w = scroll_bar_windows[ev->data.l[0]]; |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4183 scroll_bar_windows[ev->data.l[0]] = NULL; |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4184 |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4185 XSETWINDOW (window, w); |
|
5c2be00ed2ba
(scroll_bar_windows, scroll_bar_windows_size): New
Gerd Moellmann <gerd@gnu.org>
parents:
33606
diff
changeset
|
4186 f = XFRAME (w->frame); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4187 |
|
45803
9484de301252
Rename enum event_kind items.
Pavel Jan?k <Pavel@Janik.cz>
parents:
45563
diff
changeset
|
4188 ievent->kind = SCROLL_BAR_CLICK_EVENT; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4189 ievent->frame_or_window = window; |
|
30197
3237a5529020
(construct_mouse_click, x_scroll_bar_to_input_event)
Gerd Moellmann <gerd@gnu.org>
parents:
30182
diff
changeset
|
4190 ievent->arg = Qnil; |
| 49322 | 4191 #ifdef USE_GTK |
| 4192 ievent->timestamp = CurrentTime; | |
| 4193 #else | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4194 ievent->timestamp = XtLastTimestampProcessed (FRAME_X_DISPLAY (f)); |
| 49322 | 4195 #endif |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4196 ievent->part = ev->data.l[1]; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4197 ievent->code = ev->data.l[2]; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4198 ievent->x = make_number ((int) ev->data.l[3]); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4199 ievent->y = make_number ((int) ev->data.l[4]); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4200 ievent->modifiers = 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4201 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4202 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4203 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4204 #ifdef USE_MOTIF |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4205 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4206 /* Minimum and maximum values used for Motif scroll bars. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4207 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4208 #define XM_SB_MAX 10000000 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4209 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4210 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4211 /* Scroll bar callback for Motif scroll bars. WIDGET is the scroll |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4212 bar widget. CLIENT_DATA is a pointer to the scroll_bar structure. |
| 46159 | 4213 CALL_DATA is a pointer to a XmScrollBarCallbackStruct. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4214 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4215 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4216 xm_scroll_callback (widget, client_data, call_data) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4217 Widget widget; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4218 XtPointer client_data, call_data; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4219 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4220 struct scroll_bar *bar = (struct scroll_bar *) client_data; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4221 XmScrollBarCallbackStruct *cs = (XmScrollBarCallbackStruct *) call_data; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4222 int part = -1, whole = 0, portion = 0; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4223 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4224 switch (cs->reason) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4225 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4226 case XmCR_DECREMENT: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4227 bar->dragging = Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4228 part = scroll_bar_up_arrow; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4229 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4230 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4231 case XmCR_INCREMENT: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4232 bar->dragging = Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4233 part = scroll_bar_down_arrow; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4234 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4235 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4236 case XmCR_PAGE_DECREMENT: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4237 bar->dragging = Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4238 part = scroll_bar_above_handle; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4239 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4240 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4241 case XmCR_PAGE_INCREMENT: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4242 bar->dragging = Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4243 part = scroll_bar_below_handle; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4244 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4245 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4246 case XmCR_TO_TOP: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4247 bar->dragging = Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4248 part = scroll_bar_to_top; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4249 break; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4250 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4251 case XmCR_TO_BOTTOM: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4252 bar->dragging = Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4253 part = scroll_bar_to_bottom; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4254 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4255 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4256 case XmCR_DRAG: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4257 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4258 int slider_size; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4259 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4260 /* Get the slider size. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4261 BLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4262 XtVaGetValues (widget, XmNsliderSize, &slider_size, NULL); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4263 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4264 |
|
50326
d63b3eeca844
(xm_scroll_callback): Undo a tiny bit of the previous change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50324
diff
changeset
|
4265 whole = XM_SB_MAX - slider_size; |
|
50324
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
4266 portion = min (cs->value, whole); |
|
43884
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4267 part = scroll_bar_handle; |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4268 bar->dragging = make_number (cs->value); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4269 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4270 break; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4271 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4272 case XmCR_VALUE_CHANGED: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4273 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4274 }; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4275 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4276 if (part >= 0) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4277 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4278 window_being_scrolled = bar->window; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4279 last_scroll_bar_part = part; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4280 x_send_scroll_bar_event (bar->window, part, portion, whole); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4281 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4282 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4283 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4284 |
| 49322 | 4285 #else /* !USE_MOTIF, i.e. Xaw or GTK */ |
| 4286 #ifdef USE_GTK | |
|
50177
297925dd73b1
New approach to scrolling and scroll bars for better redraw and smoother
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50151
diff
changeset
|
4287 /* Scroll bar callback for GTK scroll bars. WIDGET is the scroll |
|
50521
3b4cda88d7ef
* xterm.c (xg_scroll_callback): Call gtk_range_get_adjustment to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50371
diff
changeset
|
4288 bar widget. DATA is a pointer to the scroll_bar structure. */ |
| 49322 | 4289 |
| 4290 static void | |
| 4291 xg_scroll_callback (widget, data) | |
|
50521
3b4cda88d7ef
* xterm.c (xg_scroll_callback): Call gtk_range_get_adjustment to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50371
diff
changeset
|
4292 GtkRange *widget; |
| 49322 | 4293 gpointer data; |
| 4294 { | |
| 4295 struct scroll_bar *bar = (struct scroll_bar *) data; | |
| 4296 gdouble previous; | |
| 4297 gdouble position; | |
| 4298 gdouble *p; | |
| 4299 int diff; | |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
4300 |
| 49322 | 4301 int part = -1, whole = 0, portion = 0; |
|
50521
3b4cda88d7ef
* xterm.c (xg_scroll_callback): Call gtk_range_get_adjustment to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50371
diff
changeset
|
4302 GtkAdjustment *adj = GTK_ADJUSTMENT (gtk_range_get_adjustment (widget)); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
4303 |
| 49322 | 4304 position = gtk_adjustment_get_value (adj); |
| 4305 | |
| 4306 p = g_object_get_data (G_OBJECT (widget), XG_LAST_SB_DATA); | |
| 4307 if (! p) | |
| 4308 { | |
| 4309 p = (gdouble*) xmalloc (sizeof (gdouble)); | |
| 4310 *p = XG_SB_MIN; | |
| 4311 g_object_set_data (G_OBJECT (widget), XG_LAST_SB_DATA, p); | |
| 4312 } | |
| 4313 | |
| 4314 previous = *p; | |
| 4315 *p = position; | |
| 4316 | |
|
58985
0395e55b4aa7
* xterm.c (xg_scroll_callback): Update XG_LAST_SB_DATA before
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
58891
diff
changeset
|
4317 if (xg_ignore_gtk_scrollbar) return; |
|
0395e55b4aa7
* xterm.c (xg_scroll_callback): Update XG_LAST_SB_DATA before
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
58891
diff
changeset
|
4318 |
| 49322 | 4319 diff = (int) (position - previous); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
4320 |
| 49322 | 4321 if (diff == (int) adj->step_increment) |
| 4322 { | |
| 4323 part = scroll_bar_down_arrow; | |
| 4324 bar->dragging = Qnil; | |
| 4325 } | |
| 4326 else if (-diff == (int) adj->step_increment) | |
| 4327 { | |
| 4328 part = scroll_bar_up_arrow; | |
| 4329 bar->dragging = Qnil; | |
| 4330 } | |
| 4331 else if (diff == (int) adj->page_increment) | |
| 4332 { | |
| 4333 part = scroll_bar_below_handle; | |
| 4334 bar->dragging = Qnil; | |
| 4335 } | |
| 4336 else if (-diff == (int) adj->page_increment) | |
| 4337 { | |
| 4338 part = scroll_bar_above_handle; | |
| 4339 bar->dragging = Qnil; | |
| 4340 } | |
| 4341 else | |
| 4342 { | |
| 4343 part = scroll_bar_handle; | |
| 4344 whole = adj->upper - adj->page_size; | |
|
50177
297925dd73b1
New approach to scrolling and scroll bars for better redraw and smoother
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50151
diff
changeset
|
4345 portion = min ((int)position, whole); |
|
297925dd73b1
New approach to scrolling and scroll bars for better redraw and smoother
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50151
diff
changeset
|
4346 bar->dragging = make_number ((int)portion); |
| 49322 | 4347 } |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
4348 |
| 49322 | 4349 if (part >= 0) |
|
59655
369714ad80ed
(x_draw_glyph_string_box): Fix last_x for full width rows.
Kim F. Storm <storm@cua.dk>
parents:
59264
diff
changeset
|
4350 { |
| 49322 | 4351 window_being_scrolled = bar->window; |
| 4352 last_scroll_bar_part = part; | |
| 4353 x_send_scroll_bar_event (bar->window, part, portion, whole); | |
| 4354 } | |
| 4355 } | |
| 4356 | |
| 4357 #else /* not USE_GTK */ | |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4358 |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4359 /* Xaw scroll bar callback. Invoked when the thumb is dragged. |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4360 WIDGET is the scroll bar widget. CLIENT_DATA is a pointer to the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4361 scroll bar struct. CALL_DATA is a pointer to a float saying where |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4362 the thumb is. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4363 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4364 static void |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4365 xaw_jump_callback (widget, client_data, call_data) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4366 Widget widget; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4367 XtPointer client_data, call_data; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4368 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4369 struct scroll_bar *bar = (struct scroll_bar *) client_data; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4370 float top = *(float *) call_data; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4371 float shown; |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4372 int whole, portion, height; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4373 int part; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4374 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4375 /* Get the size of the thumb, a value between 0 and 1. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4376 BLOCK_INPUT; |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4377 XtVaGetValues (widget, XtNshown, &shown, XtNheight, &height, NULL); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4378 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4379 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4380 whole = 10000000; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4381 portion = shown < 1 ? top * whole : 0; |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4382 |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4383 if (shown < 1 && (abs (top + shown - 1) < 1.0/height)) |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4384 /* Some derivatives of Xaw refuse to shrink the thumb when you reach |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4385 the bottom, so we force the scrolling whenever we see that we're |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4386 too close to the bottom (in x_set_toolkit_scroll_bar_thumb |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4387 we try to ensure that we always stay two pixels away from the |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4388 bottom). */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4389 part = scroll_bar_down_arrow; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4390 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4391 part = scroll_bar_handle; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4392 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4393 window_being_scrolled = bar->window; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4394 bar->dragging = make_number (portion); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4395 last_scroll_bar_part = part; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4396 x_send_scroll_bar_event (bar->window, part, portion, whole); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4397 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4398 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4399 |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4400 /* Xaw scroll bar callback. Invoked for incremental scrolling., |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4401 i.e. line or page up or down. WIDGET is the Xaw scroll bar |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4402 widget. CLIENT_DATA is a pointer to the scroll_bar structure for |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4403 the scroll bar. CALL_DATA is an integer specifying the action that |
| 48085 | 4404 has taken place. Its magnitude is in the range 0..height of the |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4405 scroll bar. Negative values mean scroll towards buffer start. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4406 Values < height of scroll bar mean line-wise movement. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4407 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4408 static void |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4409 xaw_scroll_callback (widget, client_data, call_data) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4410 Widget widget; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4411 XtPointer client_data, call_data; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4412 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4413 struct scroll_bar *bar = (struct scroll_bar *) client_data; |
| 48100 | 4414 /* The position really is stored cast to a pointer. */ |
| 4415 int position = (long) call_data; | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4416 Dimension height; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4417 int part; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4418 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4419 /* Get the height of the scroll bar. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4420 BLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4421 XtVaGetValues (widget, XtNheight, &height, NULL); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4422 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4423 |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4424 if (abs (position) >= height) |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4425 part = (position < 0) ? scroll_bar_above_handle : scroll_bar_below_handle; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4426 |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4427 /* If Xaw3d was compiled with ARROW_SCROLLBAR, |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4428 it maps line-movement to call_data = max(5, height/20). */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4429 else if (xaw3d_arrow_scroll && abs (position) <= max (5, height / 20)) |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4430 part = (position < 0) ? scroll_bar_up_arrow : scroll_bar_down_arrow; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4431 else |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4432 part = scroll_bar_move_ratio; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4433 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4434 window_being_scrolled = bar->window; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4435 bar->dragging = Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4436 last_scroll_bar_part = part; |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4437 x_send_scroll_bar_event (bar->window, part, position, height); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4438 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4439 |
| 49322 | 4440 #endif /* not USE_GTK */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4441 #endif /* not USE_MOTIF */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4442 |
| 49322 | 4443 #define SCROLL_BAR_NAME "verticalScrollBar" |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4444 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4445 /* Create the widget for scroll bar BAR on frame F. Record the widget |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4446 and X window of the scroll bar in BAR. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4447 |
| 49322 | 4448 #ifdef USE_GTK |
| 4449 static void | |
| 4450 x_create_toolkit_scroll_bar (f, bar) | |
| 4451 struct frame *f; | |
| 4452 struct scroll_bar *bar; | |
| 4453 { | |
| 4454 char *scroll_bar_name = SCROLL_BAR_NAME; | |
| 4455 | |
| 4456 BLOCK_INPUT; | |
| 4457 xg_create_scroll_bar (f, bar, G_CALLBACK (xg_scroll_callback), | |
| 4458 scroll_bar_name); | |
| 4459 UNBLOCK_INPUT; | |
| 4460 } | |
| 4461 | |
| 4462 #else /* not USE_GTK */ | |
| 4463 | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4464 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4465 x_create_toolkit_scroll_bar (f, bar) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4466 struct frame *f; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4467 struct scroll_bar *bar; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4468 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4469 Window xwindow; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4470 Widget widget; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4471 Arg av[20]; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4472 int ac = 0; |
| 49322 | 4473 char *scroll_bar_name = SCROLL_BAR_NAME; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4474 unsigned long pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4475 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4476 BLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4477 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4478 #ifdef USE_MOTIF |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4479 /* Set resources. Create the widget. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4480 XtSetArg (av[ac], XtNmappedWhenManaged, False); ++ac; |
|
50324
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
4481 XtSetArg (av[ac], XmNminimum, 0); ++ac; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4482 XtSetArg (av[ac], XmNmaximum, XM_SB_MAX); ++ac; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4483 XtSetArg (av[ac], XmNorientation, XmVERTICAL); ++ac; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4484 XtSetArg (av[ac], XmNprocessingDirection, XmMAX_ON_BOTTOM), ++ac; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4485 XtSetArg (av[ac], XmNincrement, 1); ++ac; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4486 XtSetArg (av[ac], XmNpageIncrement, 1); ++ac; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4487 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4488 pixel = f->output_data.x->scroll_bar_foreground_pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4489 if (pixel != -1) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4490 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4491 XtSetArg (av[ac], XmNforeground, pixel); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4492 ++ac; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4493 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4494 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4495 pixel = f->output_data.x->scroll_bar_background_pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4496 if (pixel != -1) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4497 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4498 XtSetArg (av[ac], XmNbackground, pixel); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4499 ++ac; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4500 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4501 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4502 widget = XmCreateScrollBar (f->output_data.x->edit_widget, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4503 scroll_bar_name, av, ac); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4504 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4505 /* Add one callback for everything that can happen. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4506 XtAddCallback (widget, XmNdecrementCallback, xm_scroll_callback, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4507 (XtPointer) bar); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4508 XtAddCallback (widget, XmNdragCallback, xm_scroll_callback, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4509 (XtPointer) bar); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4510 XtAddCallback (widget, XmNincrementCallback, xm_scroll_callback, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4511 (XtPointer) bar); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4512 XtAddCallback (widget, XmNpageDecrementCallback, xm_scroll_callback, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4513 (XtPointer) bar); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4514 XtAddCallback (widget, XmNpageIncrementCallback, xm_scroll_callback, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4515 (XtPointer) bar); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4516 XtAddCallback (widget, XmNtoBottomCallback, xm_scroll_callback, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4517 (XtPointer) bar); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4518 XtAddCallback (widget, XmNtoTopCallback, xm_scroll_callback, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4519 (XtPointer) bar); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4520 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4521 /* Realize the widget. Only after that is the X window created. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4522 XtRealizeWidget (widget); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4523 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4524 /* Set the cursor to an arrow. I didn't find a resource to do that. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4525 And I'm wondering why it hasn't an arrow cursor by default. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4526 XDefineCursor (XtDisplay (widget), XtWindow (widget), |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4527 f->output_data.x->nontext_cursor); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4528 |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4529 #else /* !USE_MOTIF i.e. use Xaw */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4530 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4531 /* Set resources. Create the widget. The background of the |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4532 Xaw3d scroll bar widget is a little bit light for my taste. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4533 We don't alter it here to let users change it according |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4534 to their taste with `emacs*verticalScrollBar.background: xxx'. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4535 XtSetArg (av[ac], XtNmappedWhenManaged, False); ++ac; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4536 XtSetArg (av[ac], XtNorientation, XtorientVertical); ++ac; |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4537 /* For smoother scrolling with Xaw3d -sm */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4538 /* XtSetArg (av[ac], XtNpickTop, True); ++ac; */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4539 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4540 pixel = f->output_data.x->scroll_bar_foreground_pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4541 if (pixel != -1) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4542 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4543 XtSetArg (av[ac], XtNforeground, pixel); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4544 ++ac; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4545 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4546 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4547 pixel = f->output_data.x->scroll_bar_background_pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4548 if (pixel != -1) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4549 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4550 XtSetArg (av[ac], XtNbackground, pixel); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4551 ++ac; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4552 } |
|
39618
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4553 |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4554 /* Top/bottom shadow colors. */ |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4555 |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4556 /* Allocate them, if necessary. */ |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4557 if (f->output_data.x->scroll_bar_top_shadow_pixel == -1) |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4558 { |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4559 pixel = f->output_data.x->scroll_bar_background_pixel; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4560 if (!x_alloc_lighter_color (f, FRAME_X_DISPLAY (f), FRAME_X_COLORMAP (f), |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4561 &pixel, 1.2, 0x8000)) |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4562 pixel = -1; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4563 f->output_data.x->scroll_bar_top_shadow_pixel = pixel; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4564 } |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4565 if (f->output_data.x->scroll_bar_bottom_shadow_pixel == -1) |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4566 { |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4567 pixel = f->output_data.x->scroll_bar_background_pixel; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4568 if (!x_alloc_lighter_color (f, FRAME_X_DISPLAY (f), FRAME_X_COLORMAP (f), |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4569 &pixel, 0.6, 0x4000)) |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4570 pixel = -1; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4571 f->output_data.x->scroll_bar_bottom_shadow_pixel = pixel; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4572 } |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4573 |
|
61181
3b4e4d883374
Include ThreeD.h for XtNbeNiceToColormap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60135
diff
changeset
|
4574 #ifdef XtNbeNiceToColormap |
|
39618
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4575 /* Tell the toolkit about them. */ |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4576 if (f->output_data.x->scroll_bar_top_shadow_pixel == -1 |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4577 || f->output_data.x->scroll_bar_bottom_shadow_pixel == -1) |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4578 /* We tried to allocate a color for the top/bottom shadow, and |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4579 failed, so tell Xaw3d to use dithering instead. */ |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4580 { |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4581 XtSetArg (av[ac], XtNbeNiceToColormap, True); |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4582 ++ac; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4583 } |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4584 else |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4585 /* Tell what colors Xaw3d should use for the top/bottom shadow, to |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4586 be more consistent with other emacs 3d colors, and since Xaw3d is |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4587 not good at dealing with allocation failure. */ |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4588 { |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4589 /* This tells Xaw3d to use real colors instead of dithering for |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4590 the shadows. */ |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4591 XtSetArg (av[ac], XtNbeNiceToColormap, False); |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4592 ++ac; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4593 |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4594 /* Specify the colors. */ |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4595 pixel = f->output_data.x->scroll_bar_top_shadow_pixel; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4596 if (pixel != -1) |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4597 { |
|
61181
3b4e4d883374
Include ThreeD.h for XtNbeNiceToColormap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60135
diff
changeset
|
4598 XtSetArg (av[ac], XtNtopShadowPixel, pixel); |
|
39618
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4599 ++ac; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4600 } |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4601 pixel = f->output_data.x->scroll_bar_bottom_shadow_pixel; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4602 if (pixel != -1) |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4603 { |
|
61181
3b4e4d883374
Include ThreeD.h for XtNbeNiceToColormap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60135
diff
changeset
|
4604 XtSetArg (av[ac], XtNbottomShadowPixel, pixel); |
|
39618
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4605 ++ac; |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4606 } |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4607 } |
|
61181
3b4e4d883374
Include ThreeD.h for XtNbeNiceToColormap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
60135
diff
changeset
|
4608 #endif |
|
39618
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
4609 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4610 widget = XtCreateWidget (scroll_bar_name, scrollbarWidgetClass, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4611 f->output_data.x->edit_widget, av, ac); |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4612 |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4613 { |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4614 char *initial = ""; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4615 char *val = initial; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4616 XtVaGetValues (widget, XtNscrollVCursor, (XtPointer) &val, |
|
63103
e37d71ba7c6e
(x_create_toolkit_scroll_bar): Use XtNarrowScrollbars if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62979
diff
changeset
|
4617 #ifdef XtNarrowScrollbars |
|
e37d71ba7c6e
(x_create_toolkit_scroll_bar): Use XtNarrowScrollbars if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62979
diff
changeset
|
4618 XtNarrowScrollbars, (XtPointer) &xaw3d_arrow_scroll, |
|
e37d71ba7c6e
(x_create_toolkit_scroll_bar): Use XtNarrowScrollbars if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62979
diff
changeset
|
4619 #endif |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4620 XtNpickTop, (XtPointer) &xaw3d_pick_top, NULL); |
|
63103
e37d71ba7c6e
(x_create_toolkit_scroll_bar): Use XtNarrowScrollbars if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62979
diff
changeset
|
4621 if (xaw3d_arrow_scroll || val == initial) |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4622 { /* ARROW_SCROLL */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4623 xaw3d_arrow_scroll = True; |
|
63103
e37d71ba7c6e
(x_create_toolkit_scroll_bar): Use XtNarrowScrollbars if available.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62979
diff
changeset
|
4624 /* Isn't that just a personal preference ? --Stef */ |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4625 XtVaSetValues (widget, XtNcursorName, "top_left_arrow", NULL); |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4626 } |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4627 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4628 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4629 /* Define callbacks. */ |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4630 XtAddCallback (widget, XtNjumpProc, xaw_jump_callback, (XtPointer) bar); |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4631 XtAddCallback (widget, XtNscrollProc, xaw_scroll_callback, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4632 (XtPointer) bar); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4633 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4634 /* Realize the widget. Only after that is the X window created. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4635 XtRealizeWidget (widget); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4636 |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4637 #endif /* !USE_MOTIF */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4638 |
| 46814 | 4639 /* Install an action hook that lets us detect when the user |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4640 finishes interacting with a scroll bar. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4641 if (action_hook_id == 0) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4642 action_hook_id = XtAppAddActionHook (Xt_app_con, xt_action_hook, 0); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4643 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4644 /* Remember X window and widget in the scroll bar vector. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4645 SET_SCROLL_BAR_X_WIDGET (bar, widget); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4646 xwindow = XtWindow (widget); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4647 SET_SCROLL_BAR_X_WINDOW (bar, xwindow); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4648 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4649 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4650 } |
| 49322 | 4651 #endif /* not USE_GTK */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4652 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4653 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4654 /* Set the thumb size and position of scroll bar BAR. We are currently |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4655 displaying PORTION out of a whole WHOLE, and our position POSITION. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4656 |
| 49322 | 4657 #ifdef USE_GTK |
| 4658 static void | |
| 4659 x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole) | |
| 4660 struct scroll_bar *bar; | |
| 4661 int portion, position, whole; | |
| 4662 { | |
| 4663 xg_set_toolkit_scroll_bar_thumb (bar, portion, position, whole); | |
| 4664 } | |
| 4665 | |
| 4666 #else /* not USE_GTK */ | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4667 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4668 x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4669 struct scroll_bar *bar; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4670 int portion, position, whole; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4671 { |
|
33606
01f87b0ff56f
(x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create)
Gerd Moellmann <gerd@gnu.org>
parents:
33456
diff
changeset
|
4672 struct frame *f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); |
|
01f87b0ff56f
(x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create)
Gerd Moellmann <gerd@gnu.org>
parents:
33456
diff
changeset
|
4673 Widget widget = SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4674 float top, shown; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4675 |
|
43884
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4676 BLOCK_INPUT; |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4677 |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4678 #ifdef USE_MOTIF |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4679 |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4680 /* We use an estimate of 30 chars per line rather than the real |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4681 `portion' value. This has the disadvantage that the thumb size |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4682 is not very representative, but it makes our life a lot easier. |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4683 Otherwise, we have to constantly adjust the thumb size, which |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4684 we can't always do quickly enough: while dragging, the size of |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4685 the thumb might prevent the user from dragging the thumb all the |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4686 way to the end. but Motif and some versions of Xaw3d don't allow |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4687 updating the thumb size while dragging. Also, even if we can update |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4688 its size, the update will often happen too late. |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4689 If you don't believe it, check out revision 1.650 of xterm.c to see |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4690 what hoops we were going through and the still poor behavior we got. */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
4691 portion = WINDOW_TOTAL_LINES (XWINDOW (bar->window)) * 30; |
|
43884
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4692 /* When the thumb is at the bottom, position == whole. |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4693 So we need to increase `whole' to make space for the thumb. */ |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4694 whole += portion; |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4695 |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4696 if (whole <= 0) |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4697 top = 0, shown = 1; |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4698 else |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4699 { |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4700 top = (float) position / whole; |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4701 shown = (float) portion / whole; |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4702 } |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4703 |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4704 if (NILP (bar->dragging)) |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4705 { |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4706 int size, value; |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4707 |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4708 /* Slider size. Must be in the range [1 .. MAX - MIN] where MAX |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4709 is the scroll bar's maximum and MIN is the scroll bar's minimum |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4710 value. */ |
|
50324
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
4711 size = shown * XM_SB_MAX; |
|
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
4712 size = min (size, XM_SB_MAX); |
|
43884
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4713 size = max (size, 1); |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4714 |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4715 /* Position. Must be in the range [MIN .. MAX - SLIDER_SIZE]. */ |
|
50324
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
4716 value = top * XM_SB_MAX; |
|
43884
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4717 value = min (value, XM_SB_MAX - size); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4718 |
|
43884
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4719 XmScrollBarSetValues (widget, value, size, 0, 0, False); |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4720 } |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4721 #else /* !USE_MOTIF i.e. use Xaw */ |
|
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
4722 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4723 if (whole == 0) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4724 top = 0, shown = 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4725 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4726 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4727 top = (float) position / whole; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4728 shown = (float) portion / whole; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4729 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4730 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4731 { |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4732 float old_top, old_shown; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4733 Dimension height; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4734 XtVaGetValues (widget, |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4735 XtNtopOfThumb, &old_top, |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4736 XtNshown, &old_shown, |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4737 XtNheight, &height, |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4738 NULL); |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4739 |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4740 /* Massage the top+shown values. */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4741 if (NILP (bar->dragging) || last_scroll_bar_part == scroll_bar_down_arrow) |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4742 top = max (0, min (1, top)); |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4743 else |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4744 top = old_top; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4745 /* Keep two pixels available for moving the thumb down. */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4746 shown = max (0, min (1 - top - (2.0 / height), shown)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4747 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4748 /* If the call to XawScrollbarSetThumb below doesn't seem to work, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4749 check that your system's configuration file contains a define |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4750 for `NARROWPROTO'. See s/freebsd.h for an example. */ |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4751 if (top != old_top || shown != old_shown) |
|
25101
6b42357f28f9
(x_set_toolkit_scroll_bar_thumb): Fix previous change.
Gerd Moellmann <gerd@gnu.org>
parents:
25091
diff
changeset
|
4752 { |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4753 if (NILP (bar->dragging)) |
|
25101
6b42357f28f9
(x_set_toolkit_scroll_bar_thumb): Fix previous change.
Gerd Moellmann <gerd@gnu.org>
parents:
25091
diff
changeset
|
4754 XawScrollbarSetThumb (widget, top, shown); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4755 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4756 { |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4757 /* Try to make the scrolling a tad smoother. */ |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4758 if (!xaw3d_pick_top) |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4759 shown = min (shown, old_shown); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4760 |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4761 XawScrollbarSetThumb (widget, top, shown); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4762 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4763 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4764 } |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
4765 #endif /* !USE_MOTIF */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4766 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4767 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4768 } |
| 49322 | 4769 #endif /* not USE_GTK */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4770 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4771 #endif /* USE_TOOLKIT_SCROLL_BARS */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4772 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4773 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4774 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4775 /************************************************************************ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4776 Scroll bars, general |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4777 ************************************************************************/ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4778 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4779 /* Create a scroll bar and return the scroll bar vector for it. W is |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4780 the Emacs window on which to create the scroll bar. TOP, LEFT, |
| 43591 | 4781 WIDTH and HEIGHT are the pixel coordinates and dimensions of the |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4782 scroll bar. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4783 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
4784 static struct scroll_bar * |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4785 x_scroll_bar_create (w, top, left, width, height) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4786 struct window *w; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4787 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
|
4788 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4789 struct frame *f = XFRAME (w->frame); |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
4790 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
|
4791 = 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
|
4792 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4793 BLOCK_INPUT; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4794 |
|
34066
2482c17f546e
Test USE_TOOLKIT_SCROLL_BARS everywhere with #ifdef and
Gerd Moellmann <gerd@gnu.org>
parents:
34030
diff
changeset
|
4795 #ifdef USE_TOOLKIT_SCROLL_BARS |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4796 x_create_toolkit_scroll_bar (f, bar); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4797 #else /* not USE_TOOLKIT_SCROLL_BARS */ |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4798 { |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4799 XSetWindowAttributes a; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4800 unsigned long mask; |
|
25716
e2d5cd96727b
(x_scroll_bar_handle_click): Compile only if
Gerd Moellmann <gerd@gnu.org>
parents:
25692
diff
changeset
|
4801 Window window; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4802 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4803 a.background_pixel = f->output_data.x->scroll_bar_background_pixel; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4804 if (a.background_pixel == -1) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4805 a.background_pixel = f->output_data.x->background_pixel; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4806 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4807 a.event_mask = (ButtonPressMask | ButtonReleaseMask |
|
1793
cf4c3f01ddb9
* xterm.c (x_scrollbar_create): Include PointerMotionHintMask in
Jim Blandy <jimb@redhat.com>
parents:
1787
diff
changeset
|
4808 | ButtonMotionMask | PointerMotionHintMask |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4809 | ExposureMask); |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
4810 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
|
4811 |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
4812 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
|
4813 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4814 /* Clear the area of W that will serve as a scroll bar. This is |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4815 for the case that a window has been split horizontally. In |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4816 this case, no clear_frame is generated to reduce flickering. */ |
|
40610
e2da1b3f3d94
(x_scroll_bar_create): Check for width and height > 0.
Gerd Moellmann <gerd@gnu.org>
parents:
40514
diff
changeset
|
4817 if (width > 0 && height > 0) |
|
e2da1b3f3d94
(x_scroll_bar_create): Check for width and height > 0.
Gerd Moellmann <gerd@gnu.org>
parents:
40514
diff
changeset
|
4818 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
e2da1b3f3d94
(x_scroll_bar_create): Check for width and height > 0.
Gerd Moellmann <gerd@gnu.org>
parents:
40514
diff
changeset
|
4819 left, top, width, |
|
e2da1b3f3d94
(x_scroll_bar_create): Check for width and height > 0.
Gerd Moellmann <gerd@gnu.org>
parents:
40514
diff
changeset
|
4820 window_box_height (w), False); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4821 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4822 window = XCreateWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4823 /* Position and size of scroll bar. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4824 left + VERTICAL_SCROLL_BAR_WIDTH_TRIM, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4825 top, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4826 width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4827 height, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4828 /* Border width, depth, class, and visual. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4829 0, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4830 CopyFromParent, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4831 CopyFromParent, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4832 CopyFromParent, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4833 /* Attributes. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4834 mask, &a); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4835 SET_SCROLL_BAR_X_WINDOW (bar, window); |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4836 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4837 #endif /* not USE_TOOLKIT_SCROLL_BARS */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4838 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4839 XSETWINDOW (bar->window, w); |
|
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
4840 XSETINT (bar->top, top); |
|
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
4841 XSETINT (bar->left, left); |
|
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
4842 XSETINT (bar->width, width); |
|
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
4843 XSETINT (bar->height, height); |
|
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
4844 XSETINT (bar->start, 0); |
|
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
4845 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
|
4846 bar->dragging = Qnil; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4847 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4848 /* 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
|
4849 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
|
4850 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
|
4851 XSETVECTOR (FRAME_SCROLL_BARS (f), bar); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4852 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
|
4853 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
|
4854 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4855 /* Map the window/widget. */ |
|
34066
2482c17f546e
Test USE_TOOLKIT_SCROLL_BARS everywhere with #ifdef and
Gerd Moellmann <gerd@gnu.org>
parents:
34030
diff
changeset
|
4856 #ifdef USE_TOOLKIT_SCROLL_BARS |
|
36475
488c4787ec0a
(XTset_vertical_scroll_bar): Don't clear a zero height
Gerd Moellmann <gerd@gnu.org>
parents:
36442
diff
changeset
|
4857 { |
| 49322 | 4858 #ifdef USE_GTK |
| 4859 xg_update_scrollbar_pos (f, | |
| 4860 SCROLL_BAR_X_WINDOW (bar), | |
| 4861 top, | |
| 4862 left + VERTICAL_SCROLL_BAR_WIDTH_TRIM, | |
| 4863 width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2, | |
|
57598
5a8bd30665f2
* xterm.c (x_clear_frame): Remove call to xg_frame_cleared
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57454
diff
changeset
|
4864 max (height, 1)); |
| 49322 | 4865 xg_show_scroll_bar (SCROLL_BAR_X_WINDOW (bar)); |
| 4866 #else /* not USE_GTK */ | |
|
36475
488c4787ec0a
(XTset_vertical_scroll_bar): Don't clear a zero height
Gerd Moellmann <gerd@gnu.org>
parents:
36442
diff
changeset
|
4867 Widget scroll_bar = SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar); |
|
488c4787ec0a
(XTset_vertical_scroll_bar): Don't clear a zero height
Gerd Moellmann <gerd@gnu.org>
parents:
36442
diff
changeset
|
4868 XtConfigureWidget (scroll_bar, |
|
488c4787ec0a
(XTset_vertical_scroll_bar): Don't clear a zero height
Gerd Moellmann <gerd@gnu.org>
parents:
36442
diff
changeset
|
4869 left + VERTICAL_SCROLL_BAR_WIDTH_TRIM, |
|
488c4787ec0a
(XTset_vertical_scroll_bar): Don't clear a zero height
Gerd Moellmann <gerd@gnu.org>
parents:
36442
diff
changeset
|
4870 top, |
|
488c4787ec0a
(XTset_vertical_scroll_bar): Don't clear a zero height
Gerd Moellmann <gerd@gnu.org>
parents:
36442
diff
changeset
|
4871 width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2, |
|
488c4787ec0a
(XTset_vertical_scroll_bar): Don't clear a zero height
Gerd Moellmann <gerd@gnu.org>
parents:
36442
diff
changeset
|
4872 max (height, 1), 0); |
|
488c4787ec0a
(XTset_vertical_scroll_bar): Don't clear a zero height
Gerd Moellmann <gerd@gnu.org>
parents:
36442
diff
changeset
|
4873 XtMapWidget (scroll_bar); |
| 49322 | 4874 #endif /* not USE_GTK */ |
|
36475
488c4787ec0a
(XTset_vertical_scroll_bar): Don't clear a zero height
Gerd Moellmann <gerd@gnu.org>
parents:
36442
diff
changeset
|
4875 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4876 #else /* not USE_TOOLKIT_SCROLL_BARS */ |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
4877 XMapRaised (FRAME_X_DISPLAY (f), SCROLL_BAR_X_WINDOW (bar)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4878 #endif /* not USE_TOOLKIT_SCROLL_BARS */ |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4879 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4880 UNBLOCK_INPUT; |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4881 return bar; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4882 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4883 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4884 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4885 /* Draw BAR's handle in the proper position. |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
4886 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4887 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
|
4888 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
|
4889 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
|
4890 events.) |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4891 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4892 Normally, we want to constrain the start and end of the handle to |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4893 fit inside its rectangle, but if the user is dragging the scroll |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4894 bar handle, we want to let them drag it down all the way, so that |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4895 the bar's top is as far down as it goes; otherwise, there's no way |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4896 to move to the very end of the buffer. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4897 |
|
25716
e2d5cd96727b
(x_scroll_bar_handle_click): Compile only if
Gerd Moellmann <gerd@gnu.org>
parents:
25692
diff
changeset
|
4898 #ifndef USE_TOOLKIT_SCROLL_BARS |
|
e2d5cd96727b
(x_scroll_bar_handle_click): Compile only if
Gerd Moellmann <gerd@gnu.org>
parents:
25692
diff
changeset
|
4899 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4900 static void |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
4901 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
|
4902 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
|
4903 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
|
4904 int rebuild; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4905 { |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4906 int dragging = ! NILP (bar->dragging); |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
4907 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
|
4908 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
|
4909 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
|
4910 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4911 /* 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
|
4912 if (! rebuild |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4913 && 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
|
4914 && 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
|
4915 return; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4916 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4917 BLOCK_INPUT; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4918 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4919 { |
|
16251
ec1b1ae37295
Pass frame arg in calls to VERTICAL_SCROLL_BAR_INSIDE_HEIGHT
Richard M. Stallman <rms@gnu.org>
parents:
16220
diff
changeset
|
4920 int inside_width = VERTICAL_SCROLL_BAR_INSIDE_WIDTH (f, XINT (bar->width)); |
|
ec1b1ae37295
Pass frame arg in calls to VERTICAL_SCROLL_BAR_INSIDE_HEIGHT
Richard M. Stallman <rms@gnu.org>
parents:
16220
diff
changeset
|
4921 int inside_height = VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (f, XINT (bar->height)); |
|
ec1b1ae37295
Pass frame arg in calls to VERTICAL_SCROLL_BAR_INSIDE_HEIGHT
Richard M. Stallman <rms@gnu.org>
parents:
16220
diff
changeset
|
4922 int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)); |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4923 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4924 /* 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
|
4925 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
|
4926 { |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4927 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
|
4928 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4929 if (start < 0) |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4930 start = 0; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4931 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
|
4932 start = top_range; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4933 end = start + length; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4934 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4935 if (end < start) |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4936 end = start; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4937 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
|
4938 end = top_range; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4939 } |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4940 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
4941 /* 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
|
4942 XSETINT (bar->start, start); |
|
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
4943 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
|
4944 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4945 /* 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
|
4946 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
|
4947 end = top_range; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4948 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
4949 /* 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
|
4950 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
|
4951 that many pixels tall. */ |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
4952 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
|
4953 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4954 /* 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
|
4955 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
|
4956 if (0 < start) |
|
35581
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4957 x_clear_area (FRAME_X_DISPLAY (f), w, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4958 /* x, y, width, height, and exposures. */ |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4959 VERTICAL_SCROLL_BAR_LEFT_BORDER, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4960 VERTICAL_SCROLL_BAR_TOP_BORDER, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4961 inside_width, start, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4962 False); |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4963 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4964 /* Change to proper foreground color if one is specified. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4965 if (f->output_data.x->scroll_bar_foreground_pixel != -1) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4966 XSetForeground (FRAME_X_DISPLAY (f), gc, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4967 f->output_data.x->scroll_bar_foreground_pixel); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4968 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4969 /* 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
|
4970 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
|
4971 /* x, y, width, height */ |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
4972 VERTICAL_SCROLL_BAR_LEFT_BORDER, |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
4973 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
|
4974 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
|
4975 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4976 /* Restore the foreground color of the GC if we changed it above. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4977 if (f->output_data.x->scroll_bar_foreground_pixel != -1) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4978 XSetForeground (FRAME_X_DISPLAY (f), gc, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4979 f->output_data.x->foreground_pixel); |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4980 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4981 /* 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
|
4982 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
|
4983 if (end < inside_height) |
|
35581
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4984 x_clear_area (FRAME_X_DISPLAY (f), w, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4985 /* x, y, width, height, and exposures. */ |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4986 VERTICAL_SCROLL_BAR_LEFT_BORDER, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4987 VERTICAL_SCROLL_BAR_TOP_BORDER + end, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4988 inside_width, inside_height - end, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
4989 False); |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
4990 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4991 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4992 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
4993 UNBLOCK_INPUT; |
|
25716
e2d5cd96727b
(x_scroll_bar_handle_click): Compile only if
Gerd Moellmann <gerd@gnu.org>
parents:
25692
diff
changeset
|
4994 } |
|
e2d5cd96727b
(x_scroll_bar_handle_click): Compile only if
Gerd Moellmann <gerd@gnu.org>
parents:
25692
diff
changeset
|
4995 |
|
e2d5cd96727b
(x_scroll_bar_handle_click): Compile only if
Gerd Moellmann <gerd@gnu.org>
parents:
25692
diff
changeset
|
4996 #endif /* !USE_TOOLKIT_SCROLL_BARS */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4997 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4998 /* Destroy scroll bar BAR, and set its Emacs window's scroll bar to |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
4999 nil. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5000 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5001 static void |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5002 x_scroll_bar_remove (bar) |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5003 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
|
5004 { |
|
33606
01f87b0ff56f
(x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create)
Gerd Moellmann <gerd@gnu.org>
parents:
33456
diff
changeset
|
5005 struct frame *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
|
5006 BLOCK_INPUT; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5007 |
|
34066
2482c17f546e
Test USE_TOOLKIT_SCROLL_BARS everywhere with #ifdef and
Gerd Moellmann <gerd@gnu.org>
parents:
34030
diff
changeset
|
5008 #ifdef USE_TOOLKIT_SCROLL_BARS |
| 49322 | 5009 #ifdef USE_GTK |
| 5010 xg_remove_scroll_bar (f, SCROLL_BAR_X_WINDOW (bar)); | |
| 5011 #else /* not USE_GTK */ | |
|
33606
01f87b0ff56f
(x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create)
Gerd Moellmann <gerd@gnu.org>
parents:
33456
diff
changeset
|
5012 XtDestroyWidget (SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar)); |
| 49322 | 5013 #endif /* not USE_GTK */ |
|
33606
01f87b0ff56f
(x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create)
Gerd Moellmann <gerd@gnu.org>
parents:
33456
diff
changeset
|
5014 #else |
|
01f87b0ff56f
(x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create)
Gerd Moellmann <gerd@gnu.org>
parents:
33456
diff
changeset
|
5015 XDestroyWindow (FRAME_X_DISPLAY (f), SCROLL_BAR_X_WINDOW (bar)); |
|
01f87b0ff56f
(x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create)
Gerd Moellmann <gerd@gnu.org>
parents:
33456
diff
changeset
|
5016 #endif |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5017 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5018 /* 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
|
5019 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
|
5020 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5021 UNBLOCK_INPUT; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5022 } |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5023 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5024 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5025 /* 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
|
5026 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
|
5027 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
|
5028 create one. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5029 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5030 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5031 XTset_vertical_scroll_bar (w, portion, whole, position) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5032 struct window *w; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5033 int portion, whole, position; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5034 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5035 struct frame *f = XFRAME (w->frame); |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5036 struct scroll_bar *bar; |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5037 int top, height, left, sb_left, width, sb_width; |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5038 int window_y, window_height; |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5039 |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5040 /* Get window dimensions. */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5041 window_box (w, -1, 0, &window_y, 0, &window_height); |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5042 top = window_y; |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5043 width = WINDOW_CONFIG_SCROLL_BAR_COLS (w) * FRAME_COLUMN_WIDTH (f); |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5044 height = window_height; |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5045 |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5046 /* Compute the left edge of the scroll bar area. */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5047 left = WINDOW_SCROLL_BAR_AREA_X (w); |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5048 |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5049 /* Compute the width of the scroll bar which might be less than |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5050 the width of the area reserved for the scroll bar. */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5051 if (WINDOW_CONFIG_SCROLL_BAR_WIDTH (w) > 0) |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5052 sb_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5053 else |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5054 sb_width = width; |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5055 |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5056 /* Compute the left edge of the scroll bar. */ |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5057 #ifdef USE_TOOLKIT_SCROLL_BARS |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5058 if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)) |
|
57315
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5059 sb_left = (left + |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5060 (WINDOW_RIGHTMOST_P (w) |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5061 ? width - sb_width - (width - sb_width) / 2 |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5062 : 0)); |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5063 else |
|
57315
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5064 sb_left = (left + |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5065 (WINDOW_LEFTMOST_P (w) |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5066 ? (width - sb_width) / 2 |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5067 : width - sb_width)); |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5068 #else |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5069 if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)) |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5070 sb_left = left + width - sb_width; |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5071 else |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5072 sb_left = left; |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5073 #endif |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5074 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5075 /* Does the scroll bar exist yet? */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5076 if (NILP (w->vertical_scroll_bar)) |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5077 { |
|
40610
e2da1b3f3d94
(x_scroll_bar_create): Check for width and height > 0.
Gerd Moellmann <gerd@gnu.org>
parents:
40514
diff
changeset
|
5078 if (width > 0 && height > 0) |
|
40257
98531a716f48
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40248
diff
changeset
|
5079 { |
|
98531a716f48
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40248
diff
changeset
|
5080 BLOCK_INPUT; |
|
98531a716f48
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40248
diff
changeset
|
5081 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
98531a716f48
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40248
diff
changeset
|
5082 left, top, width, height, False); |
|
98531a716f48
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40248
diff
changeset
|
5083 UNBLOCK_INPUT; |
|
98531a716f48
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40248
diff
changeset
|
5084 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5085 |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5086 bar = x_scroll_bar_create (w, top, sb_left, sb_width, height); |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5087 } |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5088 else |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5089 { |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5090 /* It may just need to be moved and resized. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5091 unsigned int mask = 0; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5092 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5093 bar = XSCROLL_BAR (w->vertical_scroll_bar); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5094 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5095 BLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5096 |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5097 if (sb_left != XINT (bar->left)) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5098 mask |= CWX; |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5099 if (top != XINT (bar->top)) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5100 mask |= CWY; |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5101 if (sb_width != XINT (bar->width)) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5102 mask |= CWWidth; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5103 if (height != XINT (bar->height)) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5104 mask |= CWHeight; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5105 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5106 #ifdef USE_TOOLKIT_SCROLL_BARS |
|
25269
621067279f19
(XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
25191
diff
changeset
|
5107 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5108 /* Move/size the scroll bar widget. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5109 if (mask) |
|
57315
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5110 { |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5111 /* Since toolkit scroll bars are smaller than the space reserved |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5112 for them on the frame, we have to clear "under" them. */ |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5113 if (width > 0 && height > 0) |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5114 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5115 left, top, width, height, False); |
|
57598
5a8bd30665f2
* xterm.c (x_clear_frame): Remove call to xg_frame_cleared
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57454
diff
changeset
|
5116 #ifdef USE_GTK |
|
5a8bd30665f2
* xterm.c (x_clear_frame): Remove call to xg_frame_cleared
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57454
diff
changeset
|
5117 xg_update_scrollbar_pos (f, |
|
5a8bd30665f2
* xterm.c (x_clear_frame): Remove call to xg_frame_cleared
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57454
diff
changeset
|
5118 SCROLL_BAR_X_WINDOW (bar), |
|
5a8bd30665f2
* xterm.c (x_clear_frame): Remove call to xg_frame_cleared
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57454
diff
changeset
|
5119 top, |
|
5a8bd30665f2
* xterm.c (x_clear_frame): Remove call to xg_frame_cleared
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57454
diff
changeset
|
5120 sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM, |
|
5a8bd30665f2
* xterm.c (x_clear_frame): Remove call to xg_frame_cleared
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57454
diff
changeset
|
5121 sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM *2, |
|
5a8bd30665f2
* xterm.c (x_clear_frame): Remove call to xg_frame_cleared
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57454
diff
changeset
|
5122 max (height, 1)); |
|
5a8bd30665f2
* xterm.c (x_clear_frame): Remove call to xg_frame_cleared
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57454
diff
changeset
|
5123 #else /* not USE_GTK */ |
| 49322 | 5124 XtConfigureWidget (SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar), |
| 5125 sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM, | |
| 5126 top, | |
| 5127 sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2, | |
| 5128 max (height, 1), 0); | |
|
57598
5a8bd30665f2
* xterm.c (x_clear_frame): Remove call to xg_frame_cleared
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57454
diff
changeset
|
5129 #endif /* not USE_GTK */ |
|
57315
0d912ccf6554
(XTset_vertical_scroll_bar): Improve handling of scroll
Kim F. Storm <storm@cua.dk>
parents:
57144
diff
changeset
|
5130 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5131 #else /* not USE_TOOLKIT_SCROLL_BARS */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5132 |
|
36880
f9243c6624b0
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
36824
diff
changeset
|
5133 /* Clear areas not covered by the scroll bar because of |
|
f9243c6624b0
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
36824
diff
changeset
|
5134 VERTICAL_SCROLL_BAR_WIDTH_TRIM. */ |
|
25633
ddf2e1fef00b
(XTread_socket): In XSetInputFocus, use RevertToParent,
Richard M. Stallman <rms@gnu.org>
parents:
25546
diff
changeset
|
5135 if (VERTICAL_SCROLL_BAR_WIDTH_TRIM) |
|
ddf2e1fef00b
(XTread_socket): In XSetInputFocus, use RevertToParent,
Richard M. Stallman <rms@gnu.org>
parents:
25546
diff
changeset
|
5136 { |
|
35581
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
5137 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
5138 left, top, VERTICAL_SCROLL_BAR_WIDTH_TRIM, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
5139 height, False); |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
5140 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
5141 left + width - VERTICAL_SCROLL_BAR_WIDTH_TRIM, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
5142 top, VERTICAL_SCROLL_BAR_WIDTH_TRIM, |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
5143 height, False); |
|
25633
ddf2e1fef00b
(XTread_socket): In XSetInputFocus, use RevertToParent,
Richard M. Stallman <rms@gnu.org>
parents:
25546
diff
changeset
|
5144 } |
|
36880
f9243c6624b0
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
36824
diff
changeset
|
5145 |
|
f9243c6624b0
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
36824
diff
changeset
|
5146 /* Clear areas not covered by the scroll bar because it's not as |
| 43591 | 5147 wide as the area reserved for it. This makes sure a |
|
36880
f9243c6624b0
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
36824
diff
changeset
|
5148 previous mode line display is cleared after C-x 2 C-x 1, for |
|
f9243c6624b0
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
36824
diff
changeset
|
5149 example. */ |
|
f9243c6624b0
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
36824
diff
changeset
|
5150 { |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5151 int area_width = WINDOW_CONFIG_SCROLL_BAR_COLS (w) * FRAME_COLUMN_WIDTH (f); |
|
36880
f9243c6624b0
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
36824
diff
changeset
|
5152 int rest = area_width - sb_width; |
|
40329
c1762ce8905b
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40303
diff
changeset
|
5153 if (rest > 0 && height > 0) |
|
c1762ce8905b
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40303
diff
changeset
|
5154 { |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5155 if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)) |
|
40329
c1762ce8905b
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40303
diff
changeset
|
5156 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
c1762ce8905b
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40303
diff
changeset
|
5157 left + area_width - rest, top, |
|
c1762ce8905b
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40303
diff
changeset
|
5158 rest, height, False); |
|
c1762ce8905b
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40303
diff
changeset
|
5159 else |
|
c1762ce8905b
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40303
diff
changeset
|
5160 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
c1762ce8905b
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40303
diff
changeset
|
5161 left, top, rest, height, False); |
|
c1762ce8905b
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
40303
diff
changeset
|
5162 } |
|
36880
f9243c6624b0
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
36824
diff
changeset
|
5163 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5164 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5165 /* Move/size the scroll bar window. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5166 if (mask) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5167 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5168 XWindowChanges wc; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5169 |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5170 wc.x = sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM; |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5171 wc.y = top; |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5172 wc.width = sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2; |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5173 wc.height = height; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5174 XConfigureWindow (FRAME_X_DISPLAY (f), SCROLL_BAR_X_WINDOW (bar), |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5175 mask, &wc); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5176 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5177 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5178 #endif /* not USE_TOOLKIT_SCROLL_BARS */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5179 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5180 /* Remember new settings. */ |
|
25512
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5181 XSETINT (bar->left, sb_left); |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5182 XSETINT (bar->top, top); |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5183 XSETINT (bar->width, sb_width); |
|
8d013f20532c
(x_scroll_bar_create): Don't clear under scroll bar
Gerd Moellmann <gerd@gnu.org>
parents:
25465
diff
changeset
|
5184 XSETINT (bar->height, height); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5185 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5186 UNBLOCK_INPUT; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5187 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5188 |
|
34066
2482c17f546e
Test USE_TOOLKIT_SCROLL_BARS everywhere with #ifdef and
Gerd Moellmann <gerd@gnu.org>
parents:
34030
diff
changeset
|
5189 #ifdef USE_TOOLKIT_SCROLL_BARS |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5190 x_set_toolkit_scroll_bar_thumb (bar, portion, position, whole); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5191 #else /* not USE_TOOLKIT_SCROLL_BARS */ |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5192 /* 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
|
5193 dragged. */ |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5194 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
|
5195 { |
|
25541
be975dcf4a0c
(XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]:
Gerd Moellmann <gerd@gnu.org>
parents:
25529
diff
changeset
|
5196 int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, height); |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5197 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5198 if (whole == 0) |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5199 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
|
5200 else |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5201 { |
|
3686
910ea1d66bfd
* xterm.c (XTset_vertical_scroll_bar): Use double type for
Jim Blandy <jimb@redhat.com>
parents:
3683
diff
changeset
|
5202 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
|
5203 int end = ((double) (position + portion) * top_range) / whole; |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5204 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
|
5205 } |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5206 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5207 #endif /* not USE_TOOLKIT_SCROLL_BARS */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5208 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5209 XSETVECTOR (w->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
|
5210 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5211 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5212 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5213 /* 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
|
5214 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
|
5215 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
|
5216 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
|
5217 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
|
5218 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
|
5219 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
|
5220 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5221 /* 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
|
5222 to `*judge_scroll_bars_hook'. A scroll bar may be spared if |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5223 `*redeem_scroll_bar_hook' is applied to its window before the judgment. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5224 |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
5225 static void |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5226 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
|
5227 FRAME_PTR frame; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5228 { |
|
13205
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
5229 /* 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
|
5230 while (! NILP (FRAME_SCROLL_BARS (frame))) |
|
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
5231 { |
|
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
5232 Lisp_Object bar; |
|
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
5233 bar = FRAME_SCROLL_BARS (frame); |
|
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
5234 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
|
5235 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
|
5236 XSCROLL_BAR (bar)->prev = Qnil; |
|
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
5237 if (! NILP (FRAME_CONDEMNED_SCROLL_BARS (frame))) |
|
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
5238 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
|
5239 FRAME_CONDEMNED_SCROLL_BARS (frame) = bar; |
|
8eac10febc8e
(x_connection_signal_1): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12966
diff
changeset
|
5240 } |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5241 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5242 |
|
33303
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5243 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5244 /* Un-mark WINDOW's scroll bar for deletion in this judgment cycle. |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5245 Note that WINDOW isn't necessarily condemned at all. */ |
|
33303
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5246 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5247 static void |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5248 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
|
5249 struct window *window; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5250 { |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5251 struct scroll_bar *bar; |
|
33303
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5252 struct frame *f; |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5253 |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5254 /* 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
|
5255 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
|
5256 abort (); |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5257 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5258 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
|
5259 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5260 /* Unlink it from the condemned list. */ |
|
33303
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5261 f = XFRAME (WINDOW_FRAME (window)); |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5262 if (NILP (bar->prev)) |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5263 { |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5264 /* If the prev pointer is nil, it must be the first in one of |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5265 the lists. */ |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5266 if (EQ (FRAME_SCROLL_BARS (f), window->vertical_scroll_bar)) |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5267 /* It's not condemned. Everything's fine. */ |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5268 return; |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5269 else if (EQ (FRAME_CONDEMNED_SCROLL_BARS (f), |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5270 window->vertical_scroll_bar)) |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5271 FRAME_CONDEMNED_SCROLL_BARS (f) = bar->next; |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5272 else |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5273 /* If its prev pointer is nil, it must be at the front of |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5274 one or the other! */ |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5275 abort (); |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5276 } |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5277 else |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5278 XSCROLL_BAR (bar->prev)->next = bar->next; |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5279 |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5280 if (! NILP (bar->next)) |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5281 XSCROLL_BAR (bar->next)->prev = bar->prev; |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5282 |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5283 bar->next = FRAME_SCROLL_BARS (f); |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5284 bar->prev = Qnil; |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5285 XSETVECTOR (FRAME_SCROLL_BARS (f), bar); |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5286 if (! NILP (bar->next)) |
|
1dc1953987a7
(x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: Map the
Gerd Moellmann <gerd@gnu.org>
parents:
33289
diff
changeset
|
5287 XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar); |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5288 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5289 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5290 /* 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
|
5291 last call to `*condemn_scroll_bars_hook'. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5292 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5293 static void |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5294 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
|
5295 FRAME_PTR f; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5296 { |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5297 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
|
5298 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5299 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
|
5300 |
|
5752a95053f2
* xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents:
1793
diff
changeset
|
5301 /* 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
|
5302 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
|
5303 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
|
5304 |
|
5752a95053f2
* xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents:
1793
diff
changeset
|
5305 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
|
5306 { |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5307 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
|
5308 |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5309 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
|
5310 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5311 next = b->next; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5312 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
|
5313 } |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5314 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5315 /* 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
|
5316 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
|
5317 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5318 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5319 |
|
50324
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
5320 #ifndef USE_TOOLKIT_SCROLL_BARS |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5321 /* Handle an Expose or GraphicsExpose event on a scroll bar. This |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5322 is a no-op when using toolkit scroll bars. |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5323 |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5324 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
|
5325 mark bits. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5326 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5327 static void |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5328 x_scroll_bar_expose (bar, event) |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5329 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
|
5330 XEvent *event; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5331 { |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5332 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
|
5333 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
|
5334 GC gc = f->output_data.x->normal_gc; |
|
16301
a02555b4b2b9
(x_scroll_bar_create, x_scroll_bar_move):
Richard M. Stallman <rms@gnu.org>
parents:
16251
diff
changeset
|
5335 int width_trim = VERTICAL_SCROLL_BAR_WIDTH_TRIM; |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5336 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5337 BLOCK_INPUT; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5338 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5339 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
|
5340 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5341 /* 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
|
5342 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
|
5343 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5344 /* x, y, width, height */ |
|
16251
ec1b1ae37295
Pass frame arg in calls to VERTICAL_SCROLL_BAR_INSIDE_HEIGHT
Richard M. Stallman <rms@gnu.org>
parents:
16220
diff
changeset
|
5345 0, 0, |
|
16301
a02555b4b2b9
(x_scroll_bar_create, x_scroll_bar_move):
Richard M. Stallman <rms@gnu.org>
parents:
16251
diff
changeset
|
5346 XINT (bar->width) - 1 - width_trim - width_trim, |
|
16251
ec1b1ae37295
Pass frame arg in calls to VERTICAL_SCROLL_BAR_INSIDE_HEIGHT
Richard M. Stallman <rms@gnu.org>
parents:
16220
diff
changeset
|
5347 XINT (bar->height) - 1); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5348 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5349 UNBLOCK_INPUT; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5350 |
|
50324
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
5351 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5352 #endif /* not USE_TOOLKIT_SCROLL_BARS */ |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5353 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5354 /* Handle a mouse click on the scroll bar BAR. If *EMACS_EVENT's kind |
|
45803
9484de301252
Rename enum event_kind items.
Pavel Jan?k <Pavel@Janik.cz>
parents:
45563
diff
changeset
|
5355 is set to something other than NO_EVENT, it is enqueued. |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5356 |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5357 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
|
5358 mark bits. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5359 |
|
25716
e2d5cd96727b
(x_scroll_bar_handle_click): Compile only if
Gerd Moellmann <gerd@gnu.org>
parents:
25692
diff
changeset
|
5360 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5361 static void |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5362 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
|
5363 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
|
5364 XEvent *event; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5365 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
|
5366 { |
|
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
5367 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
|
5368 abort (); |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5369 |
|
45803
9484de301252
Rename enum event_kind items.
Pavel Jan?k <Pavel@Janik.cz>
parents:
45563
diff
changeset
|
5370 emacs_event->kind = SCROLL_BAR_CLICK_EVENT; |
|
5228
c094c1df2e87
(XTread_socket): Don't offset keysym here.
Richard M. Stallman <rms@gnu.org>
parents:
5156
diff
changeset
|
5371 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
|
5372 emacs_event->modifiers |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
5373 = (x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO |
|
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
5374 (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
|
5375 event->xbutton.state) |
|
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
5376 | (event->type == ButtonRelease |
|
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
5377 ? up_modifier |
|
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
5378 : down_modifier)); |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5379 emacs_event->frame_or_window = bar->window; |
|
30197
3237a5529020
(construct_mouse_click, x_scroll_bar_to_input_event)
Gerd Moellmann <gerd@gnu.org>
parents:
30182
diff
changeset
|
5380 emacs_event->arg = Qnil; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5381 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
|
5382 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5383 #if 0 |
|
16251
ec1b1ae37295
Pass frame arg in calls to VERTICAL_SCROLL_BAR_INSIDE_HEIGHT
Richard M. Stallman <rms@gnu.org>
parents:
16220
diff
changeset
|
5384 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); |
|
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
5385 int internal_height |
|
16251
ec1b1ae37295
Pass frame arg in calls to VERTICAL_SCROLL_BAR_INSIDE_HEIGHT
Richard M. Stallman <rms@gnu.org>
parents:
16220
diff
changeset
|
5386 = VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (f, XINT (bar->height)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5387 #endif |
|
10287
2e96f9f98276
(x_scroll_bar_handle_click): Use GC_WINDOWP.
Richard M. Stallman <rms@gnu.org>
parents:
10274
diff
changeset
|
5388 int top_range |
|
16251
ec1b1ae37295
Pass frame arg in calls to VERTICAL_SCROLL_BAR_INSIDE_HEIGHT
Richard M. Stallman <rms@gnu.org>
parents:
16220
diff
changeset
|
5389 = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)); |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5390 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
|
5391 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5392 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
|
5393 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
|
5394 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5395 if (y < XINT (bar->start)) |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5396 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
|
5397 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
|
5398 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
|
5399 else |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5400 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
|
5401 |
|
5440f00480e6
* xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents:
2923
diff
changeset
|
5402 /* 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
|
5403 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
|
5404 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
|
5405 #if 0 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5406 /* 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
|
5407 holding it. */ |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5408 if (event->type == ButtonPress |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5409 && 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
|
5410 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
|
5411 #endif |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5412 |
|
50064
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
5413 #ifndef USE_TOOLKIT_SCROLL_BARS |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5414 /* 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
|
5415 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
|
5416 && ! NILP (bar->dragging)) |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5417 { |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5418 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
|
5419 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
|
5420 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5421 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
|
5422 bar->dragging = Qnil; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5423 } |
|
50064
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
5424 #endif |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5425 |
|
2958
3124e6244d1a
* xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar;
Jim Blandy <jimb@redhat.com>
parents:
2953
diff
changeset
|
5426 /* 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
|
5427 #if 0 |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
5428 /* 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
|
5429 the handle. */ |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5430 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
|
5431 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
|
5432 else |
|
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
5433 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
|
5434 #else |
|
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
5435 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
|
5436 #endif |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5437 |
|
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
5438 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
|
5439 } |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5440 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5441 |
|
50064
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
5442 #ifndef USE_TOOLKIT_SCROLL_BARS |
|
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
5443 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5444 /* 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
|
5445 |
|
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5446 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
|
5447 mark bits. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5448 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5449 static void |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5450 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
|
5451 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
|
5452 XEvent *event; |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5453 { |
|
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
5454 FRAME_PTR f = XFRAME (XWINDOW (bar->window)->frame); |
|
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
5455 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5456 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
|
5457 |
|
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
5458 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
|
5459 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
|
5460 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5461 /* 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
|
5462 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
|
5463 { |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5464 /* 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
|
5465 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
|
5466 |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5467 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
|
5468 { |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5469 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
|
5470 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5471 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
|
5472 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5473 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5474 } |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5475 |
|
25716
e2d5cd96727b
(x_scroll_bar_handle_click): Compile only if
Gerd Moellmann <gerd@gnu.org>
parents:
25692
diff
changeset
|
5476 #endif /* !USE_TOOLKIT_SCROLL_BARS */ |
|
e2d5cd96727b
(x_scroll_bar_handle_click): Compile only if
Gerd Moellmann <gerd@gnu.org>
parents:
25692
diff
changeset
|
5477 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5478 /* 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
|
5479 on the scroll bar. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5480 |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5481 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
|
5482 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
|
5483 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
|
5484 Lisp_Object *bar_window; |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5485 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
|
5486 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
|
5487 unsigned long *time; |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5488 { |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5489 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
|
5490 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
|
5491 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
|
5492 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
|
5493 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
|
5494 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
|
5495 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
|
5496 |
|
1803
5752a95053f2
* xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents:
1793
diff
changeset
|
5497 BLOCK_INPUT; |
|
5752a95053f2
* xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents:
1793
diff
changeset
|
5498 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5499 /* 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
|
5500 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
|
5501 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
|
5502 |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5503 /* 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
|
5504 &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
|
5505 &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
|
5506 |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5507 /* 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
|
5508 &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
|
5509 |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5510 /* 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
|
5511 &dummy_mask)) |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5512 ; |
|
2982
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5513 else |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5514 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5515 #if 0 |
|
2982
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5516 int inside_height |
|
16251
ec1b1ae37295
Pass frame arg in calls to VERTICAL_SCROLL_BAR_INSIDE_HEIGHT
Richard M. Stallman <rms@gnu.org>
parents:
16220
diff
changeset
|
5517 = VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (f, XINT (bar->height)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5518 #endif |
|
2982
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5519 int top_range |
|
16251
ec1b1ae37295
Pass frame arg in calls to VERTICAL_SCROLL_BAR_INSIDE_HEIGHT
Richard M. Stallman <rms@gnu.org>
parents:
16220
diff
changeset
|
5520 = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)); |
|
2982
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5521 |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5522 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
|
5523 |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5524 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
|
5525 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
|
5526 |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5527 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
|
5528 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
|
5529 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
|
5530 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
|
5531 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
5532 *fp = f; |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5533 *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
|
5534 |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5535 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
|
5536 *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
|
5537 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
|
5538 *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
|
5539 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
|
5540 *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
|
5541 else |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5542 *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
|
5543 |
|
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
5544 XSETINT (*x, win_y); |
|
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
5545 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
|
5546 |
|
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
5547 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
|
5548 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
|
5549 } |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5550 |
|
44ed08628516
* xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not
Jim Blandy <jimb@redhat.com>
parents:
2977
diff
changeset
|
5551 *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
|
5552 |
|
1803
5752a95053f2
* xterm.c (x_window_to_scrollbar): Search frames'
Jim Blandy <jimb@redhat.com>
parents:
1793
diff
changeset
|
5553 UNBLOCK_INPUT; |
|
1787
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5554 } |
|
5e245540d06f
Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents:
1739
diff
changeset
|
5555 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5556 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5557 /* 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
|
5558 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
|
5559 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
|
5560 redraw them. */ |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5561 |
| 21514 | 5562 void |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
5563 x_scroll_bar_clear (f) |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5564 FRAME_PTR f; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5565 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5566 #ifndef USE_TOOLKIT_SCROLL_BARS |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5567 Lisp_Object bar; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
5568 |
|
15080
50f527612ef6
(x_scroll_bar_clear): Do nothing if frame now has no scroll bars.
Richard M. Stallman <rms@gnu.org>
parents:
15067
diff
changeset
|
5569 /* We can have scroll bars even if this is 0, |
|
50f527612ef6
(x_scroll_bar_clear): Do nothing if frame now has no scroll bars.
Richard M. Stallman <rms@gnu.org>
parents:
15067
diff
changeset
|
5570 if we just turned off scroll bar mode. |
|
50f527612ef6
(x_scroll_bar_clear): Do nothing if frame now has no scroll bars.
Richard M. Stallman <rms@gnu.org>
parents:
15067
diff
changeset
|
5571 But in that case we should not clear them. */ |
|
50f527612ef6
(x_scroll_bar_clear): Do nothing if frame now has no scroll bars.
Richard M. Stallman <rms@gnu.org>
parents:
15067
diff
changeset
|
5572 if (FRAME_HAS_VERTICAL_SCROLL_BARS (f)) |
|
50f527612ef6
(x_scroll_bar_clear): Do nothing if frame now has no scroll bars.
Richard M. Stallman <rms@gnu.org>
parents:
15067
diff
changeset
|
5573 for (bar = FRAME_SCROLL_BARS (f); VECTORP (bar); |
|
50f527612ef6
(x_scroll_bar_clear): Do nothing if frame now has no scroll bars.
Richard M. Stallman <rms@gnu.org>
parents:
15067
diff
changeset
|
5574 bar = XSCROLL_BAR (bar)->next) |
|
35581
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
5575 XClearArea (FRAME_X_DISPLAY (f), |
|
3a46a6389078
(x_after_update_window_line): Don't clear if frame's
Gerd Moellmann <gerd@gnu.org>
parents:
35568
diff
changeset
|
5576 SCROLL_BAR_X_WINDOW (XSCROLL_BAR (bar)), |
|
15080
50f527612ef6
(x_scroll_bar_clear): Do nothing if frame now has no scroll bars.
Richard M. Stallman <rms@gnu.org>
parents:
15067
diff
changeset
|
5577 0, 0, 0, 0, True); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5578 #endif /* not USE_TOOLKIT_SCROLL_BARS */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5579 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5580 |
|
8353
525e990ca9d2
(x_queue_event, x_unqueue_events): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
8291
diff
changeset
|
5581 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
5582 /* The main X event-reading loop - XTread_socket. */ |
| 286 | 5583 |
|
43479
4cedb4e5510e
(enter_timestamp): Put in #if 0 to prevent warning.
Pavel Jan?k <Pavel@Janik.cz>
parents:
43369
diff
changeset
|
5584 #if 0 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5585 /* Time stamp of enter window event. This is only used by XTread_socket, |
| 286 | 5586 but we have to put it out here, since static variables within functions |
| 5587 sometimes don't work. */ | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5588 |
| 286 | 5589 static Time enter_timestamp; |
|
43479
4cedb4e5510e
(enter_timestamp): Put in #if 0 to prevent warning.
Pavel Jan?k <Pavel@Janik.cz>
parents:
43369
diff
changeset
|
5590 #endif |
| 286 | 5591 |
|
1436
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
5592 /* 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
|
5593 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
|
5594 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
|
5595 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
|
5596 |
|
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
5597 This must be defined outside of XTread_socket, for the same reasons |
| 41446 | 5598 given for enter_timestamp, above. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5599 |
|
1436
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
5600 static XComposeStatus compose_status; |
|
e7c5faab6571
* xterm.c (compose_status): New variable.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
5601 |
| 2064 | 5602 /* Record the last 100 characters stored |
| 5603 to help debug the loss-of-chars-during-GC problem. */ | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5604 |
|
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
5605 static int temp_index; |
|
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
5606 static short temp_buffer[100]; |
| 2064 | 5607 |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5608 #define STORE_KEYSYM_FOR_DEBUG(keysym) \ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5609 if (temp_index == sizeof temp_buffer / sizeof (short)) \ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5610 temp_index = 0; \ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5611 temp_buffer[temp_index++] = (keysym) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5612 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5613 /* 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
|
5614 on a particular display. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5615 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
5616 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
|
5617 |
|
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
5618 /* 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
|
5619 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
|
5620 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
|
5621 This variable is used for cycling thru the displays. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5622 |
|
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
5623 static struct x_display_info *next_noop_dpyinfo; |
|
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
5624 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5625 #define SET_SAVED_MENU_EVENT(size) \ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5626 do \ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5627 { \ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5628 if (f->output_data.x->saved_menu_event == 0) \ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5629 f->output_data.x->saved_menu_event \ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5630 = (XEvent *) xmalloc (sizeof (XEvent)); \ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5631 bcopy (&event, f->output_data.x->saved_menu_event, size); \ |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5632 inev.ie.kind = MENU_BAR_ACTIVATE_EVENT; \ |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5633 XSETFRAME (inev.ie.frame_or_window, f); \ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5634 } \ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5635 while (0) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5636 |
|
15711
099dc465c948
(SET_SAVED_MENU_EVENT): New macro.
Karl Heuer <kwzh@gnu.org>
parents:
15639
diff
changeset
|
5637 #define SET_SAVED_BUTTON_EVENT SET_SAVED_MENU_EVENT (sizeof (XButtonEvent)) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
5638 #define SET_SAVED_KEY_EVENT SET_SAVED_MENU_EVENT (sizeof (XKeyEvent)) |
|
15711
099dc465c948
(SET_SAVED_MENU_EVENT): New macro.
Karl Heuer <kwzh@gnu.org>
parents:
15639
diff
changeset
|
5639 |
| 49117 | 5640 |
| 5641 enum | |
| 5642 { | |
| 5643 X_EVENT_NORMAL, | |
| 5644 X_EVENT_GOTO_OUT, | |
| 5645 X_EVENT_DROP | |
| 5646 }; | |
| 5647 | |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5648 /* Filter events for the current X input method. |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5649 DPYINFO is the display this event is for. |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5650 EVENT is the X event to filter. |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5651 |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5652 Returns non-zero if the event was filtered, caller shall not process |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5653 this event further. |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5654 Returns zero if event is wasn't filtered. */ |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
5655 |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5656 #ifdef HAVE_X_I18N |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5657 static int |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5658 x_filter_event (dpyinfo, event) |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5659 struct x_display_info *dpyinfo; |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5660 XEvent *event; |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5661 { |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5662 /* XFilterEvent returns non-zero if the input method has |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5663 consumed the event. We pass the frame's X window to |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5664 XFilterEvent because that's the one for which the IC |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5665 was created. */ |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5666 |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5667 struct frame *f1 = x_any_window_to_frame (dpyinfo, |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5668 event->xclient.window); |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5669 |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5670 return XFilterEvent (event, f1 ? FRAME_X_WINDOW (f1) : None); |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5671 } |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5672 #endif |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5673 |
| 49322 | 5674 #ifdef USE_GTK |
| 5675 static int current_count; | |
| 5676 static int current_finish; | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5677 static struct input_event *current_hold_quit; |
| 49322 | 5678 |
| 5679 /* This is the filter function invoked by the GTK event loop. | |
| 5680 It is invoked before the XEvent is translated to a GdkEvent, | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5681 so we have a chance to act on the event before GTK. */ |
| 49322 | 5682 static GdkFilterReturn |
| 5683 event_handler_gdk (gxev, ev, data) | |
| 5684 GdkXEvent *gxev; | |
| 5685 GdkEvent *ev; | |
| 5686 gpointer data; | |
| 5687 { | |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5688 XEvent *xev = (XEvent *) gxev; |
| 49322 | 5689 |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5690 if (current_count >= 0) |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5691 { |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5692 struct x_display_info *dpyinfo; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5693 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5694 dpyinfo = x_display_info_for_display (xev->xany.display); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5695 |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5696 #ifdef HAVE_X_I18N |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5697 /* Filter events for the current X input method. |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5698 GTK calls XFilterEvent but not for key press and release, |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5699 so we do it here. */ |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5700 if (xev->type == KeyPress || xev->type == KeyRelease) |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5701 if (dpyinfo && x_filter_event (dpyinfo, xev)) |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5702 return GDK_FILTER_REMOVE; |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5703 #endif |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5704 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5705 if (! dpyinfo) |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5706 current_finish = X_EVENT_NORMAL; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5707 else |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5708 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5709 current_count += |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
5710 handle_one_xevent (dpyinfo, xev, ¤t_finish, |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5711 current_hold_quit); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5712 } |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5713 } |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
5714 else |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
5715 current_finish = x_dispatch_event (xev, xev->xany.display); |
| 49322 | 5716 |
| 5717 if (current_finish == X_EVENT_GOTO_OUT || current_finish == X_EVENT_DROP) | |
| 5718 return GDK_FILTER_REMOVE; | |
| 5719 | |
| 5720 return GDK_FILTER_CONTINUE; | |
| 5721 } | |
| 5722 #endif /* USE_GTK */ | |
| 5723 | |
| 5724 | |
| 49117 | 5725 /* Handles the XEvent EVENT on display DPYINFO. |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
5726 |
| 49117 | 5727 *FINISH is X_EVENT_GOTO_OUT if caller should stop reading events. |
| 5728 *FINISH is zero if caller should continue reading events. | |
| 5729 *FINISH is X_EVENT_DROP if event should not be passed to the toolkit. | |
| 5730 | |
| 5731 We return the number of characters stored into the buffer. */ | |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
5732 |
| 49117 | 5733 static int |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5734 handle_one_xevent (dpyinfo, eventp, finish, hold_quit) |
| 49117 | 5735 struct x_display_info *dpyinfo; |
| 5736 XEvent *eventp; | |
| 5737 int *finish; | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5738 struct input_event *hold_quit; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5739 { |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5740 union { |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5741 struct input_event ie; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5742 struct selection_input_event sie; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5743 } inev; |
| 49117 | 5744 int count = 0; |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5745 int do_help = 0; |
| 49117 | 5746 int nbytes = 0; |
| 5747 struct frame *f; | |
| 5748 struct coding_system coding; | |
| 5749 XEvent event = *eventp; | |
| 5750 | |
| 5751 *finish = X_EVENT_NORMAL; | |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
5752 |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5753 EVENT_INIT (inev.ie); |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5754 inev.ie.kind = NO_EVENT; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5755 inev.ie.arg = Qnil; |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5756 |
| 49117 | 5757 switch (event.type) |
| 5758 { | |
| 5759 case ClientMessage: | |
| 5760 { | |
| 5761 if (event.xclient.message_type | |
| 5762 == dpyinfo->Xatom_wm_protocols | |
| 5763 && event.xclient.format == 32) | |
| 5764 { | |
| 5765 if (event.xclient.data.l[0] | |
| 5766 == dpyinfo->Xatom_wm_take_focus) | |
| 5767 { | |
| 5768 /* Use x_any_window_to_frame because this | |
| 5769 could be the shell widget window | |
| 5770 if the frame has no title bar. */ | |
| 5771 f = x_any_window_to_frame (dpyinfo, event.xclient.window); | |
| 5772 #ifdef HAVE_X_I18N | |
| 5773 /* Not quite sure this is needed -pd */ | |
| 5774 if (f && FRAME_XIC (f)) | |
| 5775 XSetICFocus (FRAME_XIC (f)); | |
| 5776 #endif | |
| 5777 #if 0 /* Emacs sets WM hints whose `input' field is `true'. This | |
| 5778 instructs the WM to set the input focus automatically for | |
| 5779 Emacs with a call to XSetInputFocus. Setting WM_TAKE_FOCUS | |
| 5780 tells the WM to send us a ClientMessage WM_TAKE_FOCUS after | |
| 5781 it has set the focus. So, XSetInputFocus below is not | |
| 5782 needed. | |
| 5783 | |
| 5784 The call to XSetInputFocus below has also caused trouble. In | |
| 5785 cases where the XSetInputFocus done by the WM and the one | |
| 5786 below are temporally close (on a fast machine), the call | |
| 5787 below can generate additional FocusIn events which confuse | |
| 5788 Emacs. */ | |
| 5789 | |
| 5790 /* Since we set WM_TAKE_FOCUS, we must call | |
| 5791 XSetInputFocus explicitly. But not if f is null, | |
| 5792 since that might be an event for a deleted frame. */ | |
| 5793 if (f) | |
| 5794 { | |
| 5795 Display *d = event.xclient.display; | |
| 5796 /* Catch and ignore errors, in case window has been | |
| 5797 iconified by a window manager such as GWM. */ | |
| 5798 int count = x_catch_errors (d); | |
| 5799 XSetInputFocus (d, event.xclient.window, | |
| 5800 /* The ICCCM says this is | |
| 5801 the only valid choice. */ | |
| 5802 RevertToParent, | |
| 5803 event.xclient.data.l[1]); | |
| 5804 /* This is needed to detect the error | |
| 5805 if there is an error. */ | |
| 5806 XSync (d, False); | |
| 5807 x_uncatch_errors (d, count); | |
| 5808 } | |
| 5809 /* Not certain about handling scroll bars here */ | |
| 5810 #endif /* 0 */ | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5811 goto done; |
| 49117 | 5812 } |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5813 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5814 if (event.xclient.data.l[0] |
| 49117 | 5815 == dpyinfo->Xatom_wm_save_yourself) |
| 5816 { | |
| 5817 /* Save state modify the WM_COMMAND property to | |
| 5818 something which can reinstate us. This notifies | |
| 5819 the session manager, who's looking for such a | |
| 5820 PropertyNotify. Can restart processing when | |
| 5821 a keyboard or mouse event arrives. */ | |
| 5822 /* If we have a session manager, don't set this. | |
| 5823 KDE will then start two Emacsen, one for the | |
| 5824 session manager and one for this. */ | |
| 5825 #ifdef HAVE_X_SM | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5826 if (! x_session_have_connection ()) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5827 #endif |
| 49117 | 5828 { |
| 5829 f = x_top_window_to_frame (dpyinfo, | |
| 5830 event.xclient.window); | |
| 5831 /* This is just so we only give real data once | |
| 5832 for a single Emacs process. */ | |
| 5833 if (f == SELECTED_FRAME ()) | |
| 5834 XSetCommand (FRAME_X_DISPLAY (f), | |
| 5835 event.xclient.window, | |
| 5836 initial_argv, initial_argc); | |
| 5837 else if (f) | |
| 5838 XSetCommand (FRAME_X_DISPLAY (f), | |
| 5839 event.xclient.window, | |
| 5840 0, 0); | |
| 5841 } | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5842 goto done; |
| 49117 | 5843 } |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5844 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5845 if (event.xclient.data.l[0] |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5846 == dpyinfo->Xatom_wm_delete_window) |
| 49117 | 5847 { |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5848 f = x_any_window_to_frame (dpyinfo, |
| 49117 | 5849 event.xclient.window); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5850 if (!f) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5851 goto OTHER; /* May be a dialog that is to be removed */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5852 |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5853 inev.ie.kind = DELETE_WINDOW_EVENT; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5854 XSETFRAME (inev.ie.frame_or_window, f); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5855 goto done; |
| 49117 | 5856 } |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5857 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5858 goto done; |
| 49117 | 5859 } |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5860 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5861 if (event.xclient.message_type |
| 49117 | 5862 == dpyinfo->Xatom_wm_configure_denied) |
| 5863 { | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5864 goto done; |
| 49117 | 5865 } |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5866 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5867 if (event.xclient.message_type |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5868 == dpyinfo->Xatom_wm_window_moved) |
| 49117 | 5869 { |
| 5870 int new_x, new_y; | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5871 f = x_window_to_frame (dpyinfo, event.xclient.window); |
| 49117 | 5872 |
| 5873 new_x = event.xclient.data.s[0]; | |
| 5874 new_y = event.xclient.data.s[1]; | |
| 5875 | |
| 5876 if (f) | |
| 5877 { | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5878 f->left_pos = new_x; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5879 f->top_pos = new_y; |
| 49117 | 5880 } |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5881 goto done; |
| 49117 | 5882 } |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5883 |
| 49117 | 5884 #ifdef HACK_EDITRES |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5885 if (event.xclient.message_type |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5886 == dpyinfo->Xatom_editres) |
| 49117 | 5887 { |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5888 f = x_any_window_to_frame (dpyinfo, event.xclient.window); |
| 49117 | 5889 _XEditResCheckMessages (f->output_data.x->widget, NULL, |
| 5890 &event, NULL); | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5891 goto done; |
| 49117 | 5892 } |
| 5893 #endif /* HACK_EDITRES */ | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5894 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5895 if ((event.xclient.message_type |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5896 == dpyinfo->Xatom_DONE) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5897 || (event.xclient.message_type |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5898 == dpyinfo->Xatom_PAGE)) |
| 49117 | 5899 { |
| 5900 /* Ghostview job completed. Kill it. We could | |
| 5901 reply with "Next" if we received "Page", but we | |
| 5902 currently never do because we are interested in | |
| 5903 images, only, which should have 1 page. */ | |
| 5904 Pixmap pixmap = (Pixmap) event.xclient.data.l[1]; | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5905 f = x_window_to_frame (dpyinfo, event.xclient.window); |
| 49117 | 5906 x_kill_gs_process (pixmap, f); |
| 5907 expose_frame (f, 0, 0, 0, 0); | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5908 goto done; |
| 49117 | 5909 } |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5910 |
| 49117 | 5911 #ifdef USE_TOOLKIT_SCROLL_BARS |
| 5912 /* Scroll bar callbacks send a ClientMessage from which | |
| 5913 we construct an input_event. */ | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5914 if (event.xclient.message_type |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5915 == dpyinfo->Xatom_Scrollbar) |
| 49117 | 5916 { |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5917 x_scroll_bar_to_input_event (&event, &inev.ie); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5918 *finish = X_EVENT_GOTO_OUT; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5919 goto done; |
| 49117 | 5920 } |
| 5921 #endif /* USE_TOOLKIT_SCROLL_BARS */ | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5922 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5923 f = x_any_window_to_frame (dpyinfo, event.xclient.window); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5924 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5925 if (!f) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5926 goto OTHER; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5927 |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5928 if (x_handle_dnd_message (f, &event.xclient, dpyinfo, &inev.ie)) |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
5929 *finish = X_EVENT_DROP; |
| 49117 | 5930 } |
| 5931 break; | |
| 5932 | |
| 5933 case SelectionNotify: | |
| 5934 #ifdef USE_X_TOOLKIT | |
| 5935 if (! x_window_to_frame (dpyinfo, event.xselection.requestor)) | |
| 5936 goto OTHER; | |
| 5937 #endif /* not USE_X_TOOLKIT */ | |
| 5938 x_handle_selection_notify (&event.xselection); | |
| 5939 break; | |
| 5940 | |
| 5941 case SelectionClear: /* Someone has grabbed ownership. */ | |
| 5942 #ifdef USE_X_TOOLKIT | |
| 5943 if (! x_window_to_frame (dpyinfo, event.xselectionclear.window)) | |
| 5944 goto OTHER; | |
| 5945 #endif /* USE_X_TOOLKIT */ | |
| 5946 { | |
| 5947 XSelectionClearEvent *eventp = (XSelectionClearEvent *) &event; | |
| 5948 | |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5949 inev.ie.kind = SELECTION_CLEAR_EVENT; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5950 SELECTION_EVENT_DISPLAY (&inev.sie) = eventp->display; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5951 SELECTION_EVENT_SELECTION (&inev.sie) = eventp->selection; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5952 SELECTION_EVENT_TIME (&inev.sie) = eventp->time; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5953 inev.ie.frame_or_window = Qnil; |
| 49117 | 5954 } |
| 5955 break; | |
| 5956 | |
| 5957 case SelectionRequest: /* Someone wants our selection. */ | |
| 5958 #ifdef USE_X_TOOLKIT | |
| 5959 if (!x_window_to_frame (dpyinfo, event.xselectionrequest.owner)) | |
| 5960 goto OTHER; | |
| 5961 #endif /* USE_X_TOOLKIT */ | |
|
57953
95edcd1fae73
* xterm.c (handle_one_xevent): Don't queue X selection events
Kim F. Storm <storm@cua.dk>
parents:
57901
diff
changeset
|
5962 { |
| 49117 | 5963 XSelectionRequestEvent *eventp |
| 5964 = (XSelectionRequestEvent *) &event; | |
| 5965 | |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5966 inev.ie.kind = SELECTION_REQUEST_EVENT; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5967 SELECTION_EVENT_DISPLAY (&inev.sie) = eventp->display; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5968 SELECTION_EVENT_REQUESTOR (&inev.sie) = eventp->requestor; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5969 SELECTION_EVENT_SELECTION (&inev.sie) = eventp->selection; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5970 SELECTION_EVENT_TARGET (&inev.sie) = eventp->target; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5971 SELECTION_EVENT_PROPERTY (&inev.sie) = eventp->property; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5972 SELECTION_EVENT_TIME (&inev.sie) = eventp->time; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
5973 inev.ie.frame_or_window = Qnil; |
|
57953
95edcd1fae73
* xterm.c (handle_one_xevent): Don't queue X selection events
Kim F. Storm <storm@cua.dk>
parents:
57901
diff
changeset
|
5974 } |
| 49117 | 5975 break; |
| 5976 | |
| 5977 case PropertyNotify: | |
| 5978 #if 0 /* This is plain wrong. In the case that we are waiting for a | |
| 5979 PropertyNotify used as an ACK in incremental selection | |
| 5980 transfer, the property will be on the receiver's window. */ | |
| 5981 #if defined USE_X_TOOLKIT | |
| 5982 if (!x_any_window_to_frame (dpyinfo, event.xproperty.window)) | |
| 5983 goto OTHER; | |
| 5984 #endif | |
| 5985 #endif | |
| 5986 x_handle_property_notify (&event.xproperty); | |
| 5987 goto OTHER; | |
| 5988 | |
| 5989 case ReparentNotify: | |
| 5990 f = x_top_window_to_frame (dpyinfo, event.xreparent.window); | |
| 5991 if (f) | |
| 5992 { | |
| 5993 int x, y; | |
| 5994 f->output_data.x->parent_desc = event.xreparent.parent; | |
| 5995 x_real_positions (f, &x, &y); | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5996 f->left_pos = x; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
5997 f->top_pos = y; |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
5998 |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
5999 /* Perhaps reparented due to a WM restart. Reset this. */ |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
6000 FRAME_X_DISPLAY_INFO (f)->wm_type = X_WMTYPE_UNKNOWN; |
| 49117 | 6001 } |
|
50056
7933b5de384c
* xterm.c (handle_one_xevent): Pass ReparentNotify to Xt even if
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50021
diff
changeset
|
6002 goto OTHER; |
| 49117 | 6003 |
| 6004 case Expose: | |
| 6005 f = x_window_to_frame (dpyinfo, event.xexpose.window); | |
| 6006 if (f) | |
| 6007 { | |
| 6008 x_check_fullscreen (f); | |
| 6009 | |
|
59264
b7ebbcf3b120
* xterm.c (handle_one_xevent): Clear area in expose event for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
59206
diff
changeset
|
6010 #ifdef USE_GTK |
|
b7ebbcf3b120
* xterm.c (handle_one_xevent): Clear area in expose event for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
59206
diff
changeset
|
6011 /* This seems to be needed for GTK 2.6. */ |
|
b7ebbcf3b120
* xterm.c (handle_one_xevent): Clear area in expose event for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
59206
diff
changeset
|
6012 x_clear_area (event.xexpose.display, |
|
b7ebbcf3b120
* xterm.c (handle_one_xevent): Clear area in expose event for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
59206
diff
changeset
|
6013 event.xexpose.window, |
|
b7ebbcf3b120
* xterm.c (handle_one_xevent): Clear area in expose event for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
59206
diff
changeset
|
6014 event.xexpose.x, event.xexpose.y, |
|
b7ebbcf3b120
* xterm.c (handle_one_xevent): Clear area in expose event for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
59206
diff
changeset
|
6015 event.xexpose.width, event.xexpose.height, |
|
b7ebbcf3b120
* xterm.c (handle_one_xevent): Clear area in expose event for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
59206
diff
changeset
|
6016 FALSE); |
|
b7ebbcf3b120
* xterm.c (handle_one_xevent): Clear area in expose event for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
59206
diff
changeset
|
6017 #endif |
| 49117 | 6018 if (f->async_visible == 0) |
| 6019 { | |
| 6020 f->async_visible = 1; | |
| 6021 f->async_iconified = 0; | |
| 6022 f->output_data.x->has_been_visible = 1; | |
| 6023 SET_FRAME_GARBAGED (f); | |
| 6024 } | |
| 6025 else | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6026 expose_frame (f, |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6027 event.xexpose.x, event.xexpose.y, |
| 49117 | 6028 event.xexpose.width, event.xexpose.height); |
| 6029 } | |
| 6030 else | |
| 6031 { | |
| 6032 #ifndef USE_TOOLKIT_SCROLL_BARS | |
| 6033 struct scroll_bar *bar; | |
| 6034 #endif | |
| 6035 #if defined USE_LUCID | |
| 6036 /* Submenus of the Lucid menu bar aren't widgets | |
| 6037 themselves, so there's no way to dispatch events | |
| 6038 to them. Recognize this case separately. */ | |
| 6039 { | |
| 6040 Widget widget | |
| 6041 = x_window_to_menu_bar (event.xexpose.window); | |
| 6042 if (widget) | |
| 6043 xlwmenu_redisplay (widget); | |
| 6044 } | |
| 6045 #endif /* USE_LUCID */ | |
| 6046 | |
| 6047 #ifdef USE_TOOLKIT_SCROLL_BARS | |
| 6048 /* Dispatch event to the widget. */ | |
| 6049 goto OTHER; | |
| 6050 #else /* not USE_TOOLKIT_SCROLL_BARS */ | |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
6051 bar = x_window_to_scroll_bar (event.xexpose.display, |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
6052 event.xexpose.window); |
| 49117 | 6053 |
| 6054 if (bar) | |
| 6055 x_scroll_bar_expose (bar, &event); | |
| 6056 #ifdef USE_X_TOOLKIT | |
| 6057 else | |
| 6058 goto OTHER; | |
| 6059 #endif /* USE_X_TOOLKIT */ | |
| 6060 #endif /* not USE_TOOLKIT_SCROLL_BARS */ | |
| 6061 } | |
| 6062 break; | |
| 6063 | |
| 6064 case GraphicsExpose: /* This occurs when an XCopyArea's | |
| 6065 source area was obscured or not | |
| 6066 available. */ | |
| 6067 f = x_window_to_frame (dpyinfo, event.xgraphicsexpose.drawable); | |
| 6068 if (f) | |
| 6069 { | |
| 6070 expose_frame (f, | |
| 6071 event.xgraphicsexpose.x, event.xgraphicsexpose.y, | |
| 6072 event.xgraphicsexpose.width, | |
| 6073 event.xgraphicsexpose.height); | |
| 6074 } | |
| 6075 #ifdef USE_X_TOOLKIT | |
| 6076 else | |
| 6077 goto OTHER; | |
| 6078 #endif /* USE_X_TOOLKIT */ | |
| 6079 break; | |
| 6080 | |
| 6081 case NoExpose: /* This occurs when an XCopyArea's | |
| 6082 source area was completely | |
| 6083 available. */ | |
| 6084 break; | |
| 6085 | |
| 6086 case UnmapNotify: | |
| 6087 /* Redo the mouse-highlight after the tooltip has gone. */ | |
| 6088 if (event.xmap.window == tip_window) | |
| 6089 { | |
| 6090 tip_window = 0; | |
| 6091 redo_mouse_highlight (); | |
| 6092 } | |
| 6093 | |
| 6094 f = x_top_window_to_frame (dpyinfo, event.xunmap.window); | |
| 6095 if (f) /* F may no longer exist if | |
| 6096 the frame was deleted. */ | |
| 6097 { | |
| 6098 /* While a frame is unmapped, display generation is | |
| 6099 disabled; you don't want to spend time updating a | |
| 6100 display that won't ever be seen. */ | |
| 6101 f->async_visible = 0; | |
| 6102 /* We can't distinguish, from the event, whether the window | |
| 6103 has become iconified or invisible. So assume, if it | |
| 6104 was previously visible, than now it is iconified. | |
| 6105 But x_make_frame_invisible clears both | |
| 6106 the visible flag and the iconified flag; | |
| 6107 and that way, we know the window is not iconified now. */ | |
| 6108 if (FRAME_VISIBLE_P (f) || FRAME_ICONIFIED_P (f)) | |
| 6109 { | |
| 6110 f->async_iconified = 1; | |
| 6111 | |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6112 inev.ie.kind = ICONIFY_EVENT; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6113 XSETFRAME (inev.ie.frame_or_window, f); |
| 49117 | 6114 } |
| 6115 } | |
| 6116 goto OTHER; | |
| 6117 | |
| 6118 case MapNotify: | |
| 6119 if (event.xmap.window == tip_window) | |
| 6120 /* The tooltip has been drawn already. Avoid | |
| 6121 the SET_FRAME_GARBAGED below. */ | |
| 6122 goto OTHER; | |
| 6123 | |
| 6124 /* We use x_top_window_to_frame because map events can | |
| 6125 come for sub-windows and they don't mean that the | |
| 6126 frame is visible. */ | |
| 6127 f = x_top_window_to_frame (dpyinfo, event.xmap.window); | |
| 6128 if (f) | |
| 6129 { | |
|
56729
e6e0caa7ec87
Rename wait_reading_process_input to wait_reading_process_output.
Kim F. Storm <storm@cua.dk>
parents:
56297
diff
changeset
|
6130 /* wait_reading_process_output will notice this and update |
| 49117 | 6131 the frame's display structures. |
| 6132 If we where iconified, we should not set garbaged, | |
| 6133 because that stops redrawing on Expose events. This looks | |
| 6134 bad if we are called from a recursive event loop | |
| 6135 (x_dispatch_event), for example when a dialog is up. */ | |
| 6136 if (! f->async_iconified) | |
| 6137 SET_FRAME_GARBAGED (f); | |
| 6138 | |
| 6139 f->async_visible = 1; | |
| 6140 f->async_iconified = 0; | |
| 6141 f->output_data.x->has_been_visible = 1; | |
| 6142 | |
| 6143 if (f->iconified) | |
| 6144 { | |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6145 inev.ie.kind = DEICONIFY_EVENT; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6146 XSETFRAME (inev.ie.frame_or_window, f); |
| 49117 | 6147 } |
| 6148 else if (! NILP (Vframe_list) | |
| 6149 && ! NILP (XCDR (Vframe_list))) | |
| 6150 /* Force a redisplay sooner or later | |
| 6151 to update the frame titles | |
| 6152 in case this is the second frame. */ | |
| 6153 record_asynch_buffer_change (); | |
| 6154 } | |
| 6155 goto OTHER; | |
| 6156 | |
| 6157 case KeyPress: | |
| 6158 | |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6159 ignore_next_mouse_click_timeout = 0; |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6160 |
| 49326 | 6161 #if defined (USE_X_TOOLKIT) || defined (USE_GTK) |
| 49117 | 6162 /* Dispatch KeyPress events when in menu. */ |
| 49322 | 6163 if (popup_activated ()) |
| 49117 | 6164 goto OTHER; |
| 49326 | 6165 #endif |
| 49322 | 6166 |
| 49117 | 6167 f = x_any_window_to_frame (dpyinfo, event.xkey.window); |
| 6168 | |
| 6169 if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)) | |
| 6170 { | |
|
54733
edff9ce01ed0
(handle_one_xevent): Set mouse_face_hidden after clearing highlight.
Kim F. Storm <storm@cua.dk>
parents:
54651
diff
changeset
|
6171 clear_mouse_face (dpyinfo); |
| 49117 | 6172 dpyinfo->mouse_face_hidden = 1; |
| 6173 } | |
| 6174 | |
| 6175 #if defined USE_MOTIF && defined USE_TOOLKIT_SCROLL_BARS | |
| 6176 if (f == 0) | |
| 6177 { | |
| 6178 /* Scroll bars consume key events, but we want | |
| 6179 the keys to go to the scroll bar's frame. */ | |
| 6180 Widget widget = XtWindowToWidget (dpyinfo->display, | |
| 6181 event.xkey.window); | |
| 6182 if (widget && XmIsScrollBar (widget)) | |
| 6183 { | |
| 6184 widget = XtParent (widget); | |
| 6185 f = x_any_window_to_frame (dpyinfo, XtWindow (widget)); | |
| 6186 } | |
| 6187 } | |
| 6188 #endif /* USE_MOTIF and USE_TOOLKIT_SCROLL_BARS */ | |
| 6189 | |
| 6190 if (f != 0) | |
| 6191 { | |
| 6192 KeySym keysym, orig_keysym; | |
| 6193 /* al%imercury@uunet.uu.net says that making this 81 | |
| 6194 instead of 80 fixed a bug whereby meta chars made | |
| 6195 his Emacs hang. | |
| 6196 | |
| 6197 It seems that some version of XmbLookupString has | |
| 6198 a bug of not returning XBufferOverflow in | |
| 6199 status_return even if the input is too long to | |
| 6200 fit in 81 bytes. So, we must prepare sufficient | |
| 6201 bytes for copy_buffer. 513 bytes (256 chars for | |
| 6202 two-byte character set) seems to be a fairly good | |
| 6203 approximation. -- 2000.8.10 handa@etl.go.jp */ | |
| 6204 unsigned char copy_buffer[513]; | |
| 6205 unsigned char *copy_bufptr = copy_buffer; | |
| 6206 int copy_bufsiz = sizeof (copy_buffer); | |
| 6207 int modifiers; | |
| 6208 Lisp_Object coding_system = Qlatin_1; | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6209 Lisp_Object c; |
| 49117 | 6210 |
|
54451
66000dbe48c9
* xterm.c (handle_one_xevent): Do not pass key press events to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
54185
diff
changeset
|
6211 #ifdef USE_GTK |
|
66000dbe48c9
* xterm.c (handle_one_xevent): Do not pass key press events to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
54185
diff
changeset
|
6212 /* Don't pass keys to GTK. A Tab will shift focus to the |
|
66000dbe48c9
* xterm.c (handle_one_xevent): Do not pass key press events to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
54185
diff
changeset
|
6213 tool bar in GTK 2.4. Keys will still go to menus and |
|
66000dbe48c9
* xterm.c (handle_one_xevent): Do not pass key press events to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
54185
diff
changeset
|
6214 dialogs because in that case popup_activated is TRUE |
|
66000dbe48c9
* xterm.c (handle_one_xevent): Do not pass key press events to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
54185
diff
changeset
|
6215 (see above). */ |
|
66000dbe48c9
* xterm.c (handle_one_xevent): Do not pass key press events to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
54185
diff
changeset
|
6216 *finish = X_EVENT_DROP; |
|
66000dbe48c9
* xterm.c (handle_one_xevent): Do not pass key press events to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
54185
diff
changeset
|
6217 #endif |
|
66000dbe48c9
* xterm.c (handle_one_xevent): Do not pass key press events to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
54185
diff
changeset
|
6218 |
| 49117 | 6219 event.xkey.state |
| 6220 |= x_emacs_to_x_modifiers (FRAME_X_DISPLAY_INFO (f), | |
| 6221 extra_keyboard_modifiers); | |
| 6222 modifiers = event.xkey.state; | |
| 6223 | |
| 6224 /* This will have to go some day... */ | |
| 6225 | |
| 6226 /* make_lispy_event turns chars into control chars. | |
| 6227 Don't do it here because XLookupString is too eager. */ | |
| 6228 event.xkey.state &= ~ControlMask; | |
| 6229 event.xkey.state &= ~(dpyinfo->meta_mod_mask | |
| 6230 | dpyinfo->super_mod_mask | |
| 6231 | dpyinfo->hyper_mod_mask | |
| 6232 | dpyinfo->alt_mod_mask); | |
| 6233 | |
| 6234 /* In case Meta is ComposeCharacter, | |
| 6235 clear its status. According to Markus Ehrnsperger | |
| 6236 Markus.Ehrnsperger@lehrstuhl-bross.physik.uni-muenchen.de | |
| 6237 this enables ComposeCharacter to work whether or | |
| 6238 not it is combined with Meta. */ | |
| 6239 if (modifiers & dpyinfo->meta_mod_mask) | |
| 6240 bzero (&compose_status, sizeof (compose_status)); | |
| 6241 | |
| 6242 #ifdef HAVE_X_I18N | |
| 6243 if (FRAME_XIC (f)) | |
| 6244 { | |
| 6245 Status status_return; | |
| 6246 | |
| 6247 coding_system = Vlocale_coding_system; | |
| 6248 nbytes = XmbLookupString (FRAME_XIC (f), | |
| 6249 &event.xkey, copy_bufptr, | |
| 6250 copy_bufsiz, &keysym, | |
| 6251 &status_return); | |
| 6252 if (status_return == XBufferOverflow) | |
| 6253 { | |
| 6254 copy_bufsiz = nbytes + 1; | |
|
65764
375ab086d366
* image.c (slurp_file, xbm_read_bitmap_data): Cast to the correct
Dan Nicolaescu <dann@ics.uci.edu>
parents:
65716
diff
changeset
|
6255 copy_bufptr = (unsigned char *) alloca (copy_bufsiz); |
| 49117 | 6256 nbytes = XmbLookupString (FRAME_XIC (f), |
| 6257 &event.xkey, copy_bufptr, | |
| 6258 copy_bufsiz, &keysym, | |
| 6259 &status_return); | |
| 6260 } | |
| 6261 /* Xutf8LookupString is a new but already deprecated interface. -stef */ | |
| 6262 #if 0 && defined X_HAVE_UTF8_STRING | |
| 6263 else if (status_return == XLookupKeySym) | |
| 6264 { /* Try again but with utf-8. */ | |
| 6265 coding_system = Qutf_8; | |
| 6266 nbytes = Xutf8LookupString (FRAME_XIC (f), | |
| 6267 &event.xkey, copy_bufptr, | |
| 6268 copy_bufsiz, &keysym, | |
| 6269 &status_return); | |
| 6270 if (status_return == XBufferOverflow) | |
| 6271 { | |
| 6272 copy_bufsiz = nbytes + 1; | |
|
65764
375ab086d366
* image.c (slurp_file, xbm_read_bitmap_data): Cast to the correct
Dan Nicolaescu <dann@ics.uci.edu>
parents:
65716
diff
changeset
|
6273 copy_bufptr = (unsigned char *) alloca (copy_bufsiz); |
| 49117 | 6274 nbytes = Xutf8LookupString (FRAME_XIC (f), |
| 6275 &event.xkey, | |
| 6276 copy_bufptr, | |
| 6277 copy_bufsiz, &keysym, | |
| 6278 &status_return); | |
| 6279 } | |
| 6280 } | |
| 6281 #endif | |
| 6282 | |
| 6283 if (status_return == XLookupNone) | |
| 6284 break; | |
| 6285 else if (status_return == XLookupChars) | |
| 6286 { | |
| 6287 keysym = NoSymbol; | |
| 6288 modifiers = 0; | |
| 6289 } | |
| 6290 else if (status_return != XLookupKeySym | |
| 6291 && status_return != XLookupBoth) | |
| 6292 abort (); | |
| 6293 } | |
| 6294 else | |
| 6295 nbytes = XLookupString (&event.xkey, copy_bufptr, | |
| 6296 copy_bufsiz, &keysym, | |
| 6297 &compose_status); | |
| 6298 #else | |
| 6299 nbytes = XLookupString (&event.xkey, copy_bufptr, | |
| 6300 copy_bufsiz, &keysym, | |
| 6301 &compose_status); | |
| 6302 #endif | |
| 6303 | |
|
53596
e3e8f1dcc895
* xterm.c (handle_one_xevent): Don't handle characters that are part
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53336
diff
changeset
|
6304 /* If not using XIM/XIC, and a compose sequence is in progress, |
|
e3e8f1dcc895
* xterm.c (handle_one_xevent): Don't handle characters that are part
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53336
diff
changeset
|
6305 we break here. Otherwise, chars_matched is always 0. */ |
|
e3e8f1dcc895
* xterm.c (handle_one_xevent): Don't handle characters that are part
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53336
diff
changeset
|
6306 if (compose_status.chars_matched > 0 && nbytes == 0) |
|
e3e8f1dcc895
* xterm.c (handle_one_xevent): Don't handle characters that are part
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53336
diff
changeset
|
6307 break; |
|
e3e8f1dcc895
* xterm.c (handle_one_xevent): Don't handle characters that are part
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53336
diff
changeset
|
6308 |
|
63886
577b0b13e4de
* xterm.c (handle_one_xevent): bzero compose_status when nbytes
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
63879
diff
changeset
|
6309 bzero (&compose_status, sizeof (compose_status)); |
| 49117 | 6310 orig_keysym = keysym; |
| 6311 | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6312 /* Common for all keysym input events. */ |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6313 XSETFRAME (inev.ie.frame_or_window, f); |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6314 inev.ie.modifiers |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6315 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), modifiers); |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6316 inev.ie.timestamp = event.xkey.time; |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6317 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6318 /* First deal with keysyms which have defined |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6319 translations to characters. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6320 if (keysym >= 32 && keysym < 128) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6321 /* Avoid explicitly decoding each ASCII character. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6322 { |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6323 inev.ie.kind = ASCII_KEYSTROKE_EVENT; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6324 inev.ie.code = keysym; |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6325 goto done_keysym; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6326 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6327 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6328 /* Now non-ASCII. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6329 if (HASH_TABLE_P (Vx_keysym_table) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6330 && (NATNUMP (c = Fgethash (make_number (keysym), |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6331 Vx_keysym_table, |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6332 Qnil)))) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6333 { |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6334 inev.ie.kind = (SINGLE_BYTE_CHAR_P (XFASTINT (c)) |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6335 ? ASCII_KEYSTROKE_EVENT |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6336 : MULTIBYTE_CHAR_KEYSTROKE_EVENT); |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6337 inev.ie.code = XFASTINT (c); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6338 goto done_keysym; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6339 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6340 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6341 /* Random non-modifier sorts of keysyms. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6342 if (((keysym >= XK_BackSpace && keysym <= XK_Escape) |
| 49117 | 6343 || keysym == XK_Delete |
| 6344 #ifdef XK_ISO_Left_Tab | |
| 6345 || (keysym >= XK_ISO_Left_Tab | |
| 6346 && keysym <= XK_ISO_Enter) | |
| 6347 #endif | |
| 6348 || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */ | |
| 6349 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */ | |
| 6350 #ifdef HPUX | |
| 6351 /* This recognizes the "extended function | |
| 6352 keys". It seems there's no cleaner way. | |
| 6353 Test IsModifierKey to avoid handling | |
| 6354 mode_switch incorrectly. */ | |
| 6355 || ((unsigned) (keysym) >= XK_Select | |
| 6356 && (unsigned)(keysym) < XK_KP_Space) | |
| 6357 #endif | |
| 6358 #ifdef XK_dead_circumflex | |
| 6359 || orig_keysym == XK_dead_circumflex | |
| 6360 #endif | |
| 6361 #ifdef XK_dead_grave | |
| 6362 || orig_keysym == XK_dead_grave | |
| 6363 #endif | |
| 6364 #ifdef XK_dead_tilde | |
| 6365 || orig_keysym == XK_dead_tilde | |
| 6366 #endif | |
| 6367 #ifdef XK_dead_diaeresis | |
| 6368 || orig_keysym == XK_dead_diaeresis | |
| 6369 #endif | |
| 6370 #ifdef XK_dead_macron | |
| 6371 || orig_keysym == XK_dead_macron | |
| 6372 #endif | |
| 6373 #ifdef XK_dead_degree | |
| 6374 || orig_keysym == XK_dead_degree | |
| 6375 #endif | |
| 6376 #ifdef XK_dead_acute | |
| 6377 || orig_keysym == XK_dead_acute | |
| 6378 #endif | |
| 6379 #ifdef XK_dead_cedilla | |
| 6380 || orig_keysym == XK_dead_cedilla | |
| 6381 #endif | |
| 6382 #ifdef XK_dead_breve | |
| 6383 || orig_keysym == XK_dead_breve | |
| 6384 #endif | |
| 6385 #ifdef XK_dead_ogonek | |
| 6386 || orig_keysym == XK_dead_ogonek | |
| 6387 #endif | |
| 6388 #ifdef XK_dead_caron | |
| 6389 || orig_keysym == XK_dead_caron | |
| 6390 #endif | |
| 6391 #ifdef XK_dead_doubleacute | |
| 6392 || orig_keysym == XK_dead_doubleacute | |
| 6393 #endif | |
| 6394 #ifdef XK_dead_abovedot | |
| 6395 || orig_keysym == XK_dead_abovedot | |
| 6396 #endif | |
| 6397 || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */ | |
| 6398 || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */ | |
| 6399 /* Any "vendor-specific" key is ok. */ | |
| 6400 || (orig_keysym & (1 << 28)) | |
| 6401 || (keysym != NoSymbol && nbytes == 0)) | |
| 6402 && ! (IsModifierKey (orig_keysym) | |
| 6403 #ifndef HAVE_X11R5 | |
| 6404 #ifdef XK_Mode_switch | |
| 6405 || ((unsigned)(orig_keysym) == XK_Mode_switch) | |
| 6406 #endif | |
| 6407 #ifdef XK_Num_Lock | |
| 6408 || ((unsigned)(orig_keysym) == XK_Num_Lock) | |
| 6409 #endif | |
| 6410 #endif /* not HAVE_X11R5 */ | |
| 6411 /* The symbols from XK_ISO_Lock | |
| 6412 to XK_ISO_Last_Group_Lock | |
| 6413 don't have real modifiers but | |
| 6414 should be treated similarly to | |
| 6415 Mode_switch by Emacs. */ | |
| 6416 #if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock | |
| 6417 || ((unsigned)(orig_keysym) | |
| 6418 >= XK_ISO_Lock | |
| 6419 && (unsigned)(orig_keysym) | |
| 6420 <= XK_ISO_Last_Group_Lock) | |
| 6421 #endif | |
| 6422 )) | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6423 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6424 STORE_KEYSYM_FOR_DEBUG (keysym); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6425 /* make_lispy_event will convert this to a symbolic |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6426 key. */ |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6427 inev.ie.kind = NON_ASCII_KEYSTROKE_EVENT; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6428 inev.ie.code = keysym; |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6429 goto done_keysym; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6430 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6431 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6432 { /* Raw bytes, not keysym. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6433 register int i; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6434 register int c; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6435 int nchars, len; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6436 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6437 /* The input should be decoded with `coding_system' |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6438 which depends on which X*LookupString function |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6439 we used just above and the locale. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6440 setup_coding_system (coding_system, &coding); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6441 coding.src_multibyte = 0; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6442 coding.dst_multibyte = 1; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6443 /* The input is converted to events, thus we can't |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6444 handle composition. Anyway, there's no XIM that |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6445 gives us composition information. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6446 coding.composing = COMPOSITION_DISABLED; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6447 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6448 for (i = 0; i < nbytes; i++) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6449 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6450 STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6451 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6452 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6453 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6454 /* Decode the input data. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6455 int require; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6456 unsigned char *p; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6457 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6458 require = decoding_buffer_size (&coding, nbytes); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6459 p = (unsigned char *) alloca (require); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6460 coding.mode |= CODING_MODE_LAST_BLOCK; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6461 /* We explicitly disable composition handling because |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6462 key data should not contain any composition sequence. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6463 coding.composing = COMPOSITION_DISABLED; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6464 decode_coding (&coding, copy_bufptr, p, nbytes, require); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6465 nbytes = coding.produced; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6466 nchars = coding.produced_char; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6467 copy_bufptr = p; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6468 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6469 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6470 /* Convert the input data to a sequence of |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6471 character events. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6472 for (i = 0; i < nbytes; i += len) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6473 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6474 if (nchars == nbytes) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6475 c = copy_bufptr[i], len = 1; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6476 else |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6477 c = STRING_CHAR_AND_LENGTH (copy_bufptr + i, |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6478 nbytes - i, len); |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6479 inev.ie.kind = (SINGLE_BYTE_CHAR_P (c) |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6480 ? ASCII_KEYSTROKE_EVENT |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6481 : MULTIBYTE_CHAR_KEYSTROKE_EVENT); |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6482 inev.ie.code = c; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6483 kbd_buffer_store_event_hold (&inev.ie, hold_quit); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6484 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6485 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6486 /* Previous code updated count by nchars rather than nbytes, |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6487 but that seems bogus to me. ++kfs */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6488 count += nbytes; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6489 |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6490 inev.ie.kind = NO_EVENT; /* Already stored above. */ |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6491 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6492 if (keysym == NoSymbol) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6493 break; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6494 } |
| 49117 | 6495 } |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6496 done_keysym: |
| 49117 | 6497 #ifdef HAVE_X_I18N |
| 6498 /* Don't dispatch this event since XtDispatchEvent calls | |
| 6499 XFilterEvent, and two calls in a row may freeze the | |
| 6500 client. */ | |
| 6501 break; | |
| 6502 #else | |
| 6503 goto OTHER; | |
| 6504 #endif | |
| 6505 | |
| 6506 case KeyRelease: | |
| 6507 #ifdef HAVE_X_I18N | |
| 6508 /* Don't dispatch this event since XtDispatchEvent calls | |
| 6509 XFilterEvent, and two calls in a row may freeze the | |
| 6510 client. */ | |
| 6511 break; | |
| 6512 #else | |
| 6513 goto OTHER; | |
| 6514 #endif | |
| 6515 | |
| 6516 case EnterNotify: | |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6517 x_detect_focus_change (dpyinfo, &event, &inev.ie); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6518 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6519 f = x_any_window_to_frame (dpyinfo, event.xcrossing.window); |
| 49117 | 6520 |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6521 if (f && x_mouse_click_focus_ignore_position) |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6522 ignore_next_mouse_click_timeout = event.xmotion.time + 200; |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6523 |
| 49117 | 6524 #if 0 |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6525 if (event.xcrossing.focus) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6526 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6527 /* Avoid nasty pop/raise loops. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6528 if (f && (!(f->auto_raise) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6529 || !(f->auto_lower) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6530 || (event.xcrossing.time - enter_timestamp) > 500)) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6531 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6532 x_new_focus_frame (dpyinfo, f); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6533 enter_timestamp = event.xcrossing.time; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6534 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6535 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6536 else if (f == dpyinfo->x_focus_frame) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6537 x_new_focus_frame (dpyinfo, 0); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6538 #endif |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6539 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6540 /* EnterNotify counts as mouse movement, |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6541 so update things that depend on mouse position. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6542 if (f && !f->output_data.x->hourglass_p) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6543 note_mouse_movement (f, &event.xmotion); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6544 goto OTHER; |
| 49117 | 6545 |
| 6546 case FocusIn: | |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6547 x_detect_focus_change (dpyinfo, &event, &inev.ie); |
| 49117 | 6548 goto OTHER; |
| 6549 | |
| 6550 case LeaveNotify: | |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6551 x_detect_focus_change (dpyinfo, &event, &inev.ie); |
| 49117 | 6552 |
| 6553 f = x_top_window_to_frame (dpyinfo, event.xcrossing.window); | |
| 6554 if (f) | |
| 6555 { | |
| 6556 if (f == dpyinfo->mouse_face_mouse_frame) | |
| 6557 { | |
| 6558 /* If we move outside the frame, then we're | |
| 6559 certainly no longer on any text in the frame. */ | |
| 6560 clear_mouse_face (dpyinfo); | |
| 6561 dpyinfo->mouse_face_mouse_frame = 0; | |
| 6562 } | |
| 6563 | |
| 6564 /* Generate a nil HELP_EVENT to cancel a help-echo. | |
| 6565 Do it only if there's something to cancel. | |
| 6566 Otherwise, the startup message is cleared when | |
| 6567 the mouse leaves the frame. */ | |
| 6568 if (any_help_event_p) | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6569 do_help = -1; |
| 49117 | 6570 } |
| 6571 goto OTHER; | |
| 6572 | |
| 6573 case FocusOut: | |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6574 x_detect_focus_change (dpyinfo, &event, &inev.ie); |
| 49117 | 6575 goto OTHER; |
| 6576 | |
| 6577 case MotionNotify: | |
| 6578 { | |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6579 previous_help_echo_string = help_echo_string; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6580 help_echo_string = help_echo_object = help_echo_window = Qnil; |
| 49117 | 6581 help_echo_pos = -1; |
| 6582 | |
| 6583 if (dpyinfo->grabbed && last_mouse_frame | |
| 6584 && FRAME_LIVE_P (last_mouse_frame)) | |
| 6585 f = last_mouse_frame; | |
| 6586 else | |
| 6587 f = x_window_to_frame (dpyinfo, event.xmotion.window); | |
| 6588 | |
| 6589 if (dpyinfo->mouse_face_hidden) | |
| 6590 { | |
| 6591 dpyinfo->mouse_face_hidden = 0; | |
| 6592 clear_mouse_face (dpyinfo); | |
| 6593 } | |
| 6594 | |
| 6595 if (f) | |
| 6596 { | |
| 6597 | |
| 6598 /* Generate SELECT_WINDOW_EVENTs when needed. */ | |
| 6599 if (mouse_autoselect_window) | |
| 6600 { | |
| 6601 Lisp_Object window; | |
| 6602 | |
| 6603 window = window_from_coordinates (f, | |
| 6604 event.xmotion.x, event.xmotion.y, | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6605 0, 0, 0, 0); |
| 49117 | 6606 |
| 6607 /* Window will be selected only when it is not selected now and | |
| 6608 last mouse movement event was not in it. Minibuffer window | |
| 6609 will be selected iff it is active. */ | |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
6610 if (WINDOWP (window) |
| 49117 | 6611 && !EQ (window, last_window) |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6612 && !EQ (window, selected_window)) |
| 49117 | 6613 { |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6614 inev.ie.kind = SELECT_WINDOW_EVENT; |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6615 inev.ie.frame_or_window = window; |
| 49117 | 6616 } |
| 6617 | |
| 6618 last_window=window; | |
| 6619 } | |
| 6620 note_mouse_movement (f, &event.xmotion); | |
| 6621 } | |
| 6622 else | |
| 6623 { | |
| 6624 #ifndef USE_TOOLKIT_SCROLL_BARS | |
| 6625 struct scroll_bar *bar | |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
6626 = x_window_to_scroll_bar (event.xmotion.display, |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
6627 event.xmotion.window); |
| 49117 | 6628 |
| 6629 if (bar) | |
| 6630 x_scroll_bar_note_movement (bar, &event); | |
| 6631 #endif /* USE_TOOLKIT_SCROLL_BARS */ | |
| 6632 | |
| 6633 /* If we move outside the frame, then we're | |
| 6634 certainly no longer on any text in the frame. */ | |
| 6635 clear_mouse_face (dpyinfo); | |
| 6636 } | |
| 6637 | |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6638 /* If the contents of the global variable help_echo_string |
| 49117 | 6639 has changed, generate a HELP_EVENT. */ |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6640 if (!NILP (help_echo_string) |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6641 || !NILP (previous_help_echo_string)) |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6642 do_help = 1; |
| 49117 | 6643 goto OTHER; |
| 6644 } | |
| 6645 | |
| 6646 case ConfigureNotify: | |
| 6647 f = x_top_window_to_frame (dpyinfo, event.xconfigure.window); | |
| 6648 if (f) | |
| 6649 { | |
| 6650 #ifndef USE_X_TOOLKIT | |
| 49322 | 6651 #ifdef USE_GTK |
| 6652 xg_resize_widgets (f, event.xconfigure.width, | |
| 6653 event.xconfigure.height); | |
| 6654 #else /* not USE_GTK */ | |
| 49117 | 6655 /* If there is a pending resize for fullscreen, don't |
| 6656 do this one, the right one will come later. | |
| 6657 The toolkit version doesn't seem to need this, but we | |
| 6658 need to reset it below. */ | |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
6659 int dont_resize |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6660 = ((f->want_fullscreen & FULLSCREEN_WAIT) |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6661 && f->new_text_cols != 0); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6662 int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, event.xconfigure.height); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6663 int columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, event.xconfigure.width); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6664 |
| 49117 | 6665 if (dont_resize) |
| 6666 goto OTHER; | |
| 6667 | |
| 6668 /* In the toolkit version, change_frame_size | |
| 6669 is called by the code that handles resizing | |
| 6670 of the EmacsFrame widget. */ | |
| 6671 | |
| 6672 /* Even if the number of character rows and columns has | |
| 6673 not changed, the font size may have changed, so we need | |
| 6674 to check the pixel dimensions as well. */ | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6675 if (columns != FRAME_COLS (f) |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6676 || rows != FRAME_LINES (f) |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6677 || event.xconfigure.width != FRAME_PIXEL_WIDTH (f) |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6678 || event.xconfigure.height != FRAME_PIXEL_HEIGHT (f)) |
| 49117 | 6679 { |
| 6680 change_frame_size (f, rows, columns, 0, 1, 0); | |
| 6681 SET_FRAME_GARBAGED (f); | |
| 6682 cancel_mouse_face (f); | |
| 6683 } | |
| 49322 | 6684 #endif /* not USE_GTK */ |
| 49117 | 6685 #endif |
| 6686 | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6687 FRAME_PIXEL_WIDTH (f) = event.xconfigure.width; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6688 FRAME_PIXEL_HEIGHT (f) = event.xconfigure.height; |
| 49117 | 6689 |
| 49322 | 6690 #ifdef USE_GTK |
| 6691 /* GTK creates windows but doesn't map them. | |
| 6692 Only get real positions and check fullscreen when mapped. */ | |
| 6693 if (FRAME_GTK_OUTER_WIDGET (f) | |
| 6694 && GTK_WIDGET_MAPPED (FRAME_GTK_OUTER_WIDGET (f))) | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6695 #endif |
| 49322 | 6696 { |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6697 /* What we have now is the position of Emacs's own window. |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6698 Convert that to the position of the window manager window. */ |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6699 x_real_positions (f, &f->left_pos, &f->top_pos); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6700 |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
6701 x_check_expected_move (f); |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6702 if (f->want_fullscreen & FULLSCREEN_WAIT) |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6703 f->want_fullscreen &= ~(FULLSCREEN_WAIT|FULLSCREEN_BOTH); |
| 49322 | 6704 } |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6705 |
| 49117 | 6706 #ifdef HAVE_X_I18N |
| 6707 if (FRAME_XIC (f) && (FRAME_XIC_STYLE (f) & XIMStatusArea)) | |
| 6708 xic_set_statusarea (f); | |
| 6709 #endif | |
| 6710 | |
| 6711 if (f->output_data.x->parent_desc != FRAME_X_DISPLAY_INFO (f)->root_window) | |
| 6712 { | |
| 6713 /* Since the WM decorations come below top_pos now, | |
| 6714 we must put them below top_pos in the future. */ | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6715 f->win_gravity = NorthWestGravity; |
| 49117 | 6716 x_wm_set_size_hint (f, (long) 0, 0); |
| 6717 } | |
| 6718 } | |
| 6719 goto OTHER; | |
| 6720 | |
| 49322 | 6721 case ButtonRelease: |
| 49117 | 6722 case ButtonPress: |
| 6723 { | |
| 6724 /* If we decide we want to generate an event to be seen | |
| 6725 by the rest of Emacs, we put it here. */ | |
| 6726 int tool_bar_p = 0; | |
| 6727 | |
| 6728 bzero (&compose_status, sizeof (compose_status)); | |
| 6729 | |
| 6730 if (dpyinfo->grabbed | |
| 6731 && last_mouse_frame | |
| 6732 && FRAME_LIVE_P (last_mouse_frame)) | |
| 6733 f = last_mouse_frame; | |
| 6734 else | |
| 6735 f = x_window_to_frame (dpyinfo, event.xbutton.window); | |
| 6736 | |
| 6737 if (f) | |
| 6738 { | |
| 6739 /* Is this in the tool-bar? */ | |
| 6740 if (WINDOWP (f->tool_bar_window) | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6741 && WINDOW_TOTAL_LINES (XWINDOW (f->tool_bar_window))) |
| 49117 | 6742 { |
| 6743 Lisp_Object window; | |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6744 int x = event.xbutton.x; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6745 int y = event.xbutton.y; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6746 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6747 window = window_from_coordinates (f, x, y, 0, 0, 0, 1); |
| 49117 | 6748 if (EQ (window, f->tool_bar_window)) |
| 6749 { | |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6750 if (event.xbutton.type == ButtonPress) |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6751 handle_tool_bar_click (f, x, y, 1, 0); |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6752 else |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6753 handle_tool_bar_click (f, x, y, 0, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6754 x_x_to_emacs_modifiers (dpyinfo, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6755 event.xbutton.state)); |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
6756 tool_bar_p = 1; |
| 49117 | 6757 } |
| 6758 } | |
| 6759 | |
| 6760 if (!tool_bar_p) | |
| 6761 if (!dpyinfo->x_focus_frame | |
| 6762 || f == dpyinfo->x_focus_frame) | |
| 49322 | 6763 { |
| 49326 | 6764 #if defined (USE_X_TOOLKIT) || defined (USE_GTK) |
| 49322 | 6765 if (! popup_activated ()) |
| 49326 | 6766 #endif |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6767 { |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6768 if (ignore_next_mouse_click_timeout) |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6769 { |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6770 if (event.type == ButtonPress |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6771 && (int)(event.xbutton.time - ignore_next_mouse_click_timeout) > 0) |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6772 { |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6773 ignore_next_mouse_click_timeout = 0; |
|
65716
b7f757757288
(handle_one_xevent): Refer to union field to match the type
Dan Nicolaescu <dann@ics.uci.edu>
parents:
65713
diff
changeset
|
6774 construct_mouse_click (&inev.ie, &event.xbutton, f); |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6775 } |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6776 if (event.type == ButtonRelease) |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6777 ignore_next_mouse_click_timeout = 0; |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6778 } |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6779 else |
|
65716
b7f757757288
(handle_one_xevent): Refer to union field to match the type
Dan Nicolaescu <dann@ics.uci.edu>
parents:
65713
diff
changeset
|
6780 construct_mouse_click (&inev.ie, &event.xbutton, f); |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6781 } |
| 49322 | 6782 } |
| 49117 | 6783 } |
| 6784 else | |
| 6785 { | |
| 6786 struct scroll_bar *bar | |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
6787 = x_window_to_scroll_bar (event.xbutton.display, |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
6788 event.xbutton.window); |
| 49117 | 6789 |
|
50064
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
6790 #ifdef USE_TOOLKIT_SCROLL_BARS |
|
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
6791 /* Make the "Ctrl-Mouse-2 splits window" work for toolkit |
|
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
6792 scroll bars. */ |
|
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
6793 if (bar && event.xbutton.state & ControlMask) |
|
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
6794 { |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6795 x_scroll_bar_handle_click (bar, &event, &inev.ie); |
|
50064
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
6796 *finish = X_EVENT_DROP; |
|
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
6797 } |
|
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
6798 #else /* not USE_TOOLKIT_SCROLL_BARS */ |
| 49117 | 6799 if (bar) |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6800 x_scroll_bar_handle_click (bar, &event, &inev.ie); |
| 49117 | 6801 #endif /* not USE_TOOLKIT_SCROLL_BARS */ |
| 6802 } | |
| 6803 | |
| 6804 if (event.type == ButtonPress) | |
| 6805 { | |
| 6806 dpyinfo->grabbed |= (1 << event.xbutton.button); | |
| 6807 last_mouse_frame = f; | |
| 6808 | |
| 6809 if (!tool_bar_p) | |
| 6810 last_tool_bar_item = -1; | |
| 6811 } | |
| 6812 else | |
| 49322 | 6813 dpyinfo->grabbed &= ~(1 << event.xbutton.button); |
| 49117 | 6814 |
|
62979
c79b5010b654
(handle_one_xevent): Also ignore mouse motion just
Kim F. Storm <storm@cua.dk>
parents:
62799
diff
changeset
|
6815 /* Ignore any mouse motion that happened before this event; |
|
c79b5010b654
(handle_one_xevent): Also ignore mouse motion just
Kim F. Storm <storm@cua.dk>
parents:
62799
diff
changeset
|
6816 any subsequent mouse-movement Emacs events should reflect |
|
c79b5010b654
(handle_one_xevent): Also ignore mouse motion just
Kim F. Storm <storm@cua.dk>
parents:
62799
diff
changeset
|
6817 only motion after the ButtonPress/Release. */ |
|
c79b5010b654
(handle_one_xevent): Also ignore mouse motion just
Kim F. Storm <storm@cua.dk>
parents:
62799
diff
changeset
|
6818 if (f != 0) |
|
c79b5010b654
(handle_one_xevent): Also ignore mouse motion just
Kim F. Storm <storm@cua.dk>
parents:
62799
diff
changeset
|
6819 f->mouse_moved = 0; |
|
c79b5010b654
(handle_one_xevent): Also ignore mouse motion just
Kim F. Storm <storm@cua.dk>
parents:
62799
diff
changeset
|
6820 |
| 49322 | 6821 #if defined (USE_X_TOOLKIT) || defined (USE_GTK) |
| 49117 | 6822 f = x_menubar_window_to_frame (dpyinfo, event.xbutton.window); |
| 6823 /* For a down-event in the menu bar, | |
| 6824 don't pass it to Xt right now. | |
| 6825 Instead, save it away | |
| 6826 and we will pass it to Xt from kbd_buffer_get_event. | |
| 6827 That way, we can run some Lisp code first. */ | |
| 49322 | 6828 if ( |
| 6829 #ifdef USE_GTK | |
| 6830 ! popup_activated () | |
| 6831 && | |
| 6832 #endif | |
| 6833 f && event.type == ButtonPress | |
| 49117 | 6834 /* Verify the event is really within the menu bar |
| 6835 and not just sent to it due to grabbing. */ | |
| 6836 && event.xbutton.x >= 0 | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
6837 && event.xbutton.x < FRAME_PIXEL_WIDTH (f) |
| 49117 | 6838 && event.xbutton.y >= 0 |
| 6839 && event.xbutton.y < f->output_data.x->menubar_height | |
| 6840 && event.xbutton.same_screen) | |
| 6841 { | |
| 6842 SET_SAVED_BUTTON_EVENT; | |
| 6843 XSETFRAME (last_mouse_press_frame, f); | |
| 49322 | 6844 #ifdef USE_GTK |
| 6845 *finish = X_EVENT_DROP; | |
| 6846 #endif | |
| 49117 | 6847 } |
| 6848 else if (event.type == ButtonPress) | |
| 6849 { | |
| 6850 last_mouse_press_frame = Qnil; | |
| 6851 goto OTHER; | |
| 6852 } | |
| 6853 | |
| 6854 #ifdef USE_MOTIF /* This should do not harm for Lucid, | |
| 6855 but I am trying to be cautious. */ | |
| 6856 else if (event.type == ButtonRelease) | |
| 6857 { | |
| 6858 if (!NILP (last_mouse_press_frame)) | |
| 6859 { | |
| 6860 f = XFRAME (last_mouse_press_frame); | |
| 6861 if (f->output_data.x) | |
| 6862 SET_SAVED_BUTTON_EVENT; | |
| 6863 } | |
| 6864 else | |
| 6865 goto OTHER; | |
| 6866 } | |
| 6867 #endif /* USE_MOTIF */ | |
| 6868 else | |
| 6869 goto OTHER; | |
| 49322 | 6870 #endif /* USE_X_TOOLKIT || USE_GTK */ |
| 49117 | 6871 } |
| 6872 break; | |
| 6873 | |
| 6874 case CirculateNotify: | |
| 6875 goto OTHER; | |
| 6876 | |
| 6877 case CirculateRequest: | |
| 6878 goto OTHER; | |
| 6879 | |
| 6880 case VisibilityNotify: | |
| 6881 goto OTHER; | |
| 6882 | |
| 6883 case MappingNotify: | |
| 6884 /* Someone has changed the keyboard mapping - update the | |
| 6885 local cache. */ | |
| 6886 switch (event.xmapping.request) | |
| 6887 { | |
| 6888 case MappingModifier: | |
| 6889 x_find_modifier_meanings (dpyinfo); | |
| 6890 /* This is meant to fall through. */ | |
| 6891 case MappingKeyboard: | |
| 6892 XRefreshKeyboardMapping (&event.xmapping); | |
| 6893 } | |
| 6894 goto OTHER; | |
| 6895 | |
| 6896 default: | |
| 6897 OTHER: | |
| 6898 #ifdef USE_X_TOOLKIT | |
| 6899 BLOCK_INPUT; | |
|
50064
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
6900 if (*finish != X_EVENT_DROP) |
|
40170697bff1
Implement Ctrl-Mouse-2 (split vertically) for toolkit scrollbars
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
50056
diff
changeset
|
6901 XtDispatchEvent (&event); |
| 49117 | 6902 UNBLOCK_INPUT; |
| 6903 #endif /* USE_X_TOOLKIT */ | |
| 6904 break; | |
| 6905 } | |
| 6906 | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6907 done: |
|
60135
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6908 if (inev.ie.kind != NO_EVENT) |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6909 { |
|
c3fe3363f1c7
(handle_one_xevent): Use union of struct input_event and
Andreas Schwab <schwab@suse.de>
parents:
59893
diff
changeset
|
6910 kbd_buffer_store_event_hold (&inev.ie, hold_quit); |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6911 count++; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6912 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6913 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6914 if (do_help |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6915 && !(hold_quit && hold_quit->kind != NO_EVENT)) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6916 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6917 Lisp_Object frame; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6918 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6919 if (f) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6920 XSETFRAME (frame, f); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6921 else |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6922 frame = Qnil; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6923 |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6924 if (do_help > 0) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6925 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6926 any_help_event_p = 1; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6927 gen_help_event (help_echo_string, frame, help_echo_window, |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6928 help_echo_object, help_echo_pos); |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
6929 } |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6930 else |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6931 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6932 help_echo_string = Qnil; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6933 gen_help_event (Qnil, frame, Qnil, Qnil, 0); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6934 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6935 count++; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6936 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6937 |
| 49117 | 6938 *eventp = event; |
| 6939 return count; | |
| 6940 } | |
| 6941 | |
| 6942 | |
| 6943 /* Handles the XEvent EVENT on display DISPLAY. | |
| 6944 This is used for event loops outside the normal event handling, | |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
6945 i.e. looping while a popup menu or a dialog is posted. |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
6946 |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
6947 Returns the value handle_one_xevent sets in the finish argument. */ |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
6948 int |
| 49117 | 6949 x_dispatch_event (event, display) |
| 6950 XEvent *event; | |
| 6951 Display *display; | |
| 6952 { | |
| 6953 struct x_display_info *dpyinfo; | |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
6954 int finish = X_EVENT_NORMAL; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
6955 |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
6956 dpyinfo = x_display_info_for_display (display); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
6957 |
| 49117 | 6958 if (dpyinfo) |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6959 handle_one_xevent (dpyinfo, event, &finish, 0); |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
6960 |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
6961 return finish; |
| 49117 | 6962 } |
| 6963 | |
| 6964 | |
| 286 | 6965 /* Read events coming from the X server. |
| 6966 This routine is called by the SIGIO handler. | |
| 6967 We return as soon as there are no more events to be read. | |
| 6968 | |
| 6969 We return the number of characters stored into the buffer, | |
| 6970 thus pretending to be `read'. | |
| 6971 | |
| 6972 EXPECTED is nonzero if the caller knows input is available. */ | |
| 6973 | |
|
43884
eb248012bf4a
(x_set_toolkit_scroll_bar_thumb) <USE_MOTIF>: Use a fixed-size
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43839
diff
changeset
|
6974 static int |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6975 XTread_socket (sd, expected, hold_quit) |
| 286 | 6976 register int sd; |
| 6977 int expected; | |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
6978 struct input_event *hold_quit; |
| 286 | 6979 { |
| 6980 int count = 0; | |
| 6981 XEvent event; | |
|
3938
83d870a52936
* xterm.c (XTread_socket): Initialize event_found to zero, and
Jim Blandy <jimb@redhat.com>
parents:
3924
diff
changeset
|
6982 int event_found = 0; |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
6983 struct x_display_info *dpyinfo; |
| 286 | 6984 |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2353
diff
changeset
|
6985 if (interrupt_input_blocked) |
| 286 | 6986 { |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2353
diff
changeset
|
6987 interrupt_input_pending = 1; |
| 286 | 6988 return -1; |
| 6989 } | |
| 6990 | |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2353
diff
changeset
|
6991 interrupt_input_pending = 0; |
| 286 | 6992 BLOCK_INPUT; |
|
9337
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
6993 |
|
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
6994 /* 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
|
6995 input_signal_count++; |
|
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
6996 |
|
30083
998d20abc885
(XTread_socket): Increment handling_signal at the start,
Gerd Moellmann <gerd@gnu.org>
parents:
30050
diff
changeset
|
6997 ++handling_signal; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
6998 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
6999 /* 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
|
7000 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
|
7001 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
|
7002 { |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7003 #if 0 /* This ought to be unnecessary; let's verify it. */ |
| 286 | 7004 #ifdef FIOSNBIO |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7005 /* 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
|
7006 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
|
7007 FIOSNBIO is ignored, and instead of signaling EWOULDBLOCK, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7008 a read returns 0, which Xlib interprets as equivalent to EPIPE. */ |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7009 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
|
7010 #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
|
7011 #endif |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7012 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7013 #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
|
7014 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
|
7015 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
|
7016 for X connections. */ |
| 286 | 7017 #ifndef SIGIO |
| 7018 #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
|
7019 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
|
7020 { |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7021 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
|
7022 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
|
7023 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
|
7024 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
|
7025 } |
|
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
7026 #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
|
7027 #endif /* SIGIO */ |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7028 #endif |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7029 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7030 /* 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
|
7031 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
|
7032 { |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7033 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
|
7034 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
|
7035 } |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7036 |
|
43812
20dbe11a2ad3
Added calls to x_session_check_input () and x_session_initialize ().
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
43713
diff
changeset
|
7037 #ifdef HAVE_X_SM |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7038 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7039 struct input_event inev; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7040 BLOCK_INPUT; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7041 /* We don't need to EVENT_INIT (inev) here, as |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7042 x_session_check_input copies an entire input_event. */ |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7043 if (x_session_check_input (&inev)) |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7044 { |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7045 kbd_buffer_store_event_hold (&inev, hold_quit); |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7046 count++; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7047 } |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7048 UNBLOCK_INPUT; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7049 } |
|
43812
20dbe11a2ad3
Added calls to x_session_check_input () and x_session_initialize ().
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
43713
diff
changeset
|
7050 #endif |
|
20dbe11a2ad3
Added calls to x_session_check_input () and x_session_initialize ().
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
43713
diff
changeset
|
7051 |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7052 #ifndef USE_GTK |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7053 while (XPending (dpyinfo->display)) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7054 { |
| 49117 | 7055 int finish; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
7056 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7057 XNextEvent (dpyinfo->display, &event); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7058 |
|
15973
6ad9e8fee494
(XTread_socket): Call XFilterEvent on all events,
Richard M. Stallman <rms@gnu.org>
parents:
15928
diff
changeset
|
7059 #ifdef HAVE_X_I18N |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
7060 /* Filter events for the current X input method. */ |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
7061 if (x_filter_event (dpyinfo, &event)) |
|
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
7062 break; |
|
15973
6ad9e8fee494
(XTread_socket): Call XFilterEvent on all events,
Richard M. Stallman <rms@gnu.org>
parents:
15928
diff
changeset
|
7063 #endif |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7064 event_found = 1; |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7065 |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7066 count += handle_one_xevent (dpyinfo, &event, &finish, hold_quit); |
| 49117 | 7067 |
| 7068 if (finish == X_EVENT_GOTO_OUT) | |
| 7069 goto out; | |
| 7070 } | |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7071 #endif /* not USE_GTK */ |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7072 } |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7073 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7074 #ifdef USE_GTK |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7075 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7076 /* For GTK we must use the GTK event loop. But XEvents gets passed |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7077 to our filter function above, and then to the big event switch. |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7078 We use a bunch of globals to communicate with our filter function, |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7079 that is kind of ugly, but it works. |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7080 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7081 There is no way to do one display at the time, GTK just does events |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7082 from all displays. */ |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7083 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7084 while (gtk_events_pending ()) |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7085 { |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7086 current_count = count; |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7087 current_hold_quit = hold_quit; |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7088 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7089 gtk_main_iteration (); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7090 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7091 count = current_count; |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7092 current_count = -1; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7093 current_hold_quit = 0; |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7094 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7095 if (current_finish == X_EVENT_GOTO_OUT) |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7096 break; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7097 } |
| 49322 | 7098 #endif /* USE_GTK */ |
| 286 | 7099 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7100 out:; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7101 |
|
8485
6e4b40c80021
(XTread_socket): Don't test X_IO_BUG; make that code unconditional.
Richard M. Stallman <rms@gnu.org>
parents:
8437
diff
changeset
|
7102 /* 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
|
7103 when the window is destroyed. Detect that. (1994.) */ |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
7104 if (! event_found) |
|
7916
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
7105 { |
|
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
7106 /* 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
|
7107 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
|
7108 B. Bretthauer, 1994 */ |
|
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
7109 x_noop_count++; |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
7110 if (x_noop_count >= 100) |
|
7916
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
7111 { |
|
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
7112 x_noop_count=0; |
|
12657
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
7113 |
|
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
7114 if (next_noop_dpyinfo == 0) |
|
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
7115 next_noop_dpyinfo = x_display_list; |
|
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
7116 |
|
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
7117 XNoOp (next_noop_dpyinfo->display); |
|
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
7118 |
|
05b7a5d25df6
(next_noop_dpyinfo): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
12530
diff
changeset
|
7119 /* 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
|
7120 next_noop_dpyinfo = next_noop_dpyinfo->next; |
|
7916
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
7121 } |
|
50e9e0c8806a
(x_noop_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
7905
diff
changeset
|
7122 } |
|
5753
eb44ecad5557
(XTread_socket): Add X_IO_BUG conditional.
Richard M. Stallman <rms@gnu.org>
parents:
5740
diff
changeset
|
7123 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7124 /* If the focus was just given to an auto-raising frame, |
|
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
7125 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
|
7126 /* ??? 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
|
7127 if (pending_autoraise_frame) |
|
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
7128 { |
|
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
7129 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
|
7130 pending_autoraise_frame = 0; |
|
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
7131 } |
|
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
7132 |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7133 --handling_signal; |
| 286 | 7134 UNBLOCK_INPUT; |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
7135 |
| 286 | 7136 return count; |
| 7137 } | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7138 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7139 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7140 |
| 286 | 7141 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7142 /*********************************************************************** |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7143 Text Cursor |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7144 ***********************************************************************/ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7145 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7146 /* Set clipping for output in glyph row ROW. W is the window in which |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7147 we operate. GC is the graphics context to set clipping in. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7148 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7149 ROW may be a text row or, e.g., a mode line. Text rows must be |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7150 clipped to the interior of the window dedicated to text display, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7151 mode lines must be clipped to the whole window. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7152 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7153 static void |
|
58403
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
7154 x_clip_to_row (w, row, area, gc) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7155 struct window *w; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7156 struct glyph_row *row; |
|
58403
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
7157 int area; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7158 GC gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7159 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7160 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7161 XRectangle clip_rect; |
|
58403
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
7162 int window_x, window_y, window_width; |
|
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
7163 |
|
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
7164 window_box (w, area, &window_x, &window_y, &window_width, 0); |
|
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
7165 |
|
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
7166 clip_rect.x = window_x; |
|
59750
06038cdb686a
(x_clip_to_row): Ensure y >= 0.
Kim F. Storm <storm@cua.dk>
parents:
59745
diff
changeset
|
7167 clip_rect.y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, row->y)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7168 clip_rect.y = max (clip_rect.y, window_y); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7169 clip_rect.width = window_width; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7170 clip_rect.height = row->visible_height; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7171 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7172 XSetClipRectangles (FRAME_X_DISPLAY (f), gc, 0, 0, &clip_rect, 1, Unsorted); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7173 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7174 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7175 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7176 /* Draw a hollow box cursor on window W in glyph row ROW. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7177 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7178 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7179 x_draw_hollow_cursor (w, row) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7180 struct window *w; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7181 struct glyph_row *row; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7182 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7183 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7184 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7185 Display *dpy = FRAME_X_DISPLAY (f); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7186 int x, y, wd, h; |
|
18775
fcfa336f737e
(x_draw_box): Use scratch_cursor_gc to draw the cursor
Richard M. Stallman <rms@gnu.org>
parents:
18733
diff
changeset
|
7187 XGCValues xgcv; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7188 struct glyph *cursor_glyph; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7189 GC gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7190 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7191 /* Get the glyph the cursor is on. If we can't tell because |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7192 the current matrix is invalid or such, give up. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7193 cursor_glyph = get_phys_cursor_glyph (w); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7194 if (cursor_glyph == NULL) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7195 return; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7196 |
|
59750
06038cdb686a
(x_clip_to_row): Ensure y >= 0.
Kim F. Storm <storm@cua.dk>
parents:
59745
diff
changeset
|
7197 /* Compute frame-relative coordinates for phys cursor. */ |
|
53336
9a1b69cfa7be
(Qface, Qmouse_face): Remove unused externs.
Kim F. Storm <storm@cua.dk>
parents:
53083
diff
changeset
|
7198 x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); |
|
59750
06038cdb686a
(x_clip_to_row): Ensure y >= 0.
Kim F. Storm <storm@cua.dk>
parents:
59745
diff
changeset
|
7199 y = get_phys_cursor_geometry (w, row, cursor_glyph, &h); |
|
06038cdb686a
(x_clip_to_row): Ensure y >= 0.
Kim F. Storm <storm@cua.dk>
parents:
59745
diff
changeset
|
7200 wd = w->phys_cursor_width; |
|
53336
9a1b69cfa7be
(Qface, Qmouse_face): Remove unused externs.
Kim F. Storm <storm@cua.dk>
parents:
53083
diff
changeset
|
7201 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7202 /* The foreground of cursor_gc is typically the same as the normal |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7203 background color, which can cause the cursor box to be invisible. */ |
|
18775
fcfa336f737e
(x_draw_box): Use scratch_cursor_gc to draw the cursor
Richard M. Stallman <rms@gnu.org>
parents:
18733
diff
changeset
|
7204 xgcv.foreground = f->output_data.x->cursor_pixel; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7205 if (dpyinfo->scratch_cursor_gc) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7206 XChangeGC (dpy, dpyinfo->scratch_cursor_gc, GCForeground, &xgcv); |
|
18775
fcfa336f737e
(x_draw_box): Use scratch_cursor_gc to draw the cursor
Richard M. Stallman <rms@gnu.org>
parents:
18733
diff
changeset
|
7207 else |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7208 dpyinfo->scratch_cursor_gc = XCreateGC (dpy, FRAME_X_WINDOW (f), |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7209 GCForeground, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7210 gc = dpyinfo->scratch_cursor_gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7211 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7212 /* Set clipping, draw the rectangle, and reset clipping again. */ |
|
58403
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
7213 x_clip_to_row (w, row, TEXT_AREA, gc); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7214 XDrawRectangle (dpy, FRAME_X_WINDOW (f), gc, x, y, wd, h); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7215 XSetClipMask (dpy, gc, None); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7216 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7217 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7218 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7219 /* Draw a bar cursor on window W in glyph row ROW. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7220 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7221 Implementation note: One would like to draw a bar cursor with an |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7222 angle equal to the one given by the font property XA_ITALIC_ANGLE. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7223 Unfortunately, I didn't find a font yet that has this property set. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7224 --gerd. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7225 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7226 static void |
|
44690
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7227 x_draw_bar_cursor (w, row, width, kind) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7228 struct window *w; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7229 struct glyph_row *row; |
|
28321
fc0a61d81fc5
(x_display_and_set_cursor): Choose cursor depending
Gerd Moellmann <gerd@gnu.org>
parents:
28307
diff
changeset
|
7230 int width; |
|
44690
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7231 enum text_cursor_kinds kind; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7232 { |
|
30742
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7233 struct frame *f = XFRAME (w->frame); |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7234 struct glyph *cursor_glyph; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7235 |
|
30742
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7236 /* If cursor is out of bounds, don't draw garbage. This can happen |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7237 in mini-buffer windows when switching between echo area glyphs |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7238 and mini-buffer. */ |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7239 cursor_glyph = get_phys_cursor_glyph (w); |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7240 if (cursor_glyph == NULL) |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7241 return; |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7242 |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7243 /* If on an image, draw like a normal cursor. That's usually better |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7244 visible than drawing a bar, esp. if the image is large so that |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7245 the bar might not be in the window. */ |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7246 if (cursor_glyph->type == IMAGE_GLYPH) |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7247 { |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7248 struct glyph_row *row; |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7249 row = MATRIX_ROW (w->current_matrix, w->phys_cursor.vpos); |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7250 draw_phys_cursor_glyph (w, row, DRAW_CURSOR); |
|
30742
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7251 } |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7252 else |
|
e25bfc3f618c
(x_draw_bar_cursor): If cursor is on an image, draw a
Gerd Moellmann <gerd@gnu.org>
parents:
30700
diff
changeset
|
7253 { |
|
41073
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7254 Display *dpy = FRAME_X_DISPLAY (f); |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7255 Window window = FRAME_X_WINDOW (f); |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7256 GC gc = FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc; |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7257 unsigned long mask = GCForeground | GCBackground | GCGraphicsExposures; |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7258 struct face *face = FACE_FROM_ID (f, cursor_glyph->face_id); |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7259 XGCValues xgcv; |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7260 |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7261 /* If the glyph's background equals the color we normally draw |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7262 the bar cursor in, the bar cursor in its normal color is |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7263 invisible. Use the glyph's foreground color instead in this |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7264 case, on the assumption that the glyph's colors are chosen so |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7265 that the glyph is legible. */ |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7266 if (face->background == f->output_data.x->cursor_pixel) |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7267 xgcv.background = xgcv.foreground = face->foreground; |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7268 else |
|
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7269 xgcv.background = xgcv.foreground = f->output_data.x->cursor_pixel; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7270 xgcv.graphics_exposures = 0; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7271 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7272 if (gc) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7273 XChangeGC (dpy, gc, mask, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7274 else |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7275 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7276 gc = XCreateGC (dpy, window, mask, &xgcv); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7277 FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc = gc; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7278 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7279 |
|
28321
fc0a61d81fc5
(x_display_and_set_cursor): Choose cursor depending
Gerd Moellmann <gerd@gnu.org>
parents:
28307
diff
changeset
|
7280 if (width < 0) |
|
47143
264271f9ab24
(x_specified_cursor_type): Remove prototype.
Kim F. Storm <storm@cua.dk>
parents:
47057
diff
changeset
|
7281 width = FRAME_CURSOR_WIDTH (f); |
|
41073
3dafa2c81609
(x_draw_bar_cursor): If the background color of the
Gerd Moellmann <gerd@gnu.org>
parents:
40957
diff
changeset
|
7282 width = min (cursor_glyph->pixel_width, width); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7283 |
|
44774
f2158eb57017
(x_draw_hollow_cursor, x_draw_bar_cursor)
Gerd Moellmann <gerd@gnu.org>
parents:
44763
diff
changeset
|
7284 w->phys_cursor_width = width; |
|
58403
c936fa56eb60
(x_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57953
diff
changeset
|
7285 x_clip_to_row (w, row, TEXT_AREA, gc); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7286 |
|
44690
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7287 if (kind == BAR_CURSOR) |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7288 XFillRectangle (dpy, window, gc, |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7289 WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x), |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7290 WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y), |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7291 width, row->height); |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7292 else |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7293 XFillRectangle (dpy, window, gc, |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7294 WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x), |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7295 WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y + |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7296 row->height - width), |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7297 cursor_glyph->pixel_width, |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7298 width); |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7299 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7300 XSetClipMask (dpy, gc, None); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7301 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7302 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7303 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7304 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7305 /* RIF: Define cursor CURSOR on frame F. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7306 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7307 static void |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7308 x_define_frame_cursor (f, cursor) |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7309 struct frame *f; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7310 Cursor cursor; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7311 { |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7312 XDefineCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), cursor); |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7313 } |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7314 |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7315 |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7316 /* RIF: Clear area on frame F. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7317 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7318 static void |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7319 x_clear_frame_area (f, x, y, width, height) |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7320 struct frame *f; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7321 int x, y, width, height; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7322 { |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7323 x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7324 x, y, width, height, False); |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7325 } |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7326 |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7327 |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7328 /* RIF: Draw cursor on window W. */ |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7329 |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7330 static void |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50237
diff
changeset
|
7331 x_draw_window_cursor (w, glyph_row, x, y, cursor_type, cursor_width, on_p, active_p) |
|
37922
fcd11c3e6341
(cursor_in_mouse_face_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37726
diff
changeset
|
7332 struct window *w; |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7333 struct glyph_row *glyph_row; |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50237
diff
changeset
|
7334 int x, y; |
|
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50237
diff
changeset
|
7335 int cursor_type, cursor_width; |
|
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50237
diff
changeset
|
7336 int on_p, active_p; |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7337 { |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7338 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7339 |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50237
diff
changeset
|
7340 if (on_p) |
|
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50237
diff
changeset
|
7341 { |
|
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50237
diff
changeset
|
7342 w->phys_cursor_type = cursor_type; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7343 w->phys_cursor_on_p = 1; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7344 |
|
53609
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
7345 if (glyph_row->exact_window_width_line_p |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
7346 && w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA]) |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
7347 { |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
7348 glyph_row->cursor_in_fringe_p = 1; |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
7349 draw_fringe_bitmap (w, glyph_row, 0); |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
7350 } |
|
0bb1ce3944cd
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53596
diff
changeset
|
7351 else |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50237
diff
changeset
|
7352 switch (cursor_type) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7353 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7354 case HOLLOW_BOX_CURSOR: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7355 x_draw_hollow_cursor (w, glyph_row); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7356 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7357 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7358 case FILLED_BOX_CURSOR: |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
7359 draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7360 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7361 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7362 case BAR_CURSOR: |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50237
diff
changeset
|
7363 x_draw_bar_cursor (w, glyph_row, cursor_width, BAR_CURSOR); |
|
44690
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7364 break; |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7365 |
|
8826cd76618a
(x_draw_bar_cursor): New argument KIND; callers changed.
Eli Zaretskii <eliz@gnu.org>
parents:
44626
diff
changeset
|
7366 case HBAR_CURSOR: |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50237
diff
changeset
|
7367 x_draw_bar_cursor (w, glyph_row, cursor_width, HBAR_CURSOR); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7368 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7369 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7370 case NO_CURSOR: |
|
44814
06d704d7ed94
(x_display_and_set_cursor): Set phys_cursor_width to
Gerd Moellmann <gerd@gnu.org>
parents:
44805
diff
changeset
|
7371 w->phys_cursor_width = 0; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7372 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7373 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7374 default: |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7375 abort (); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7376 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7377 |
|
27619
1d5c785bca99
* xterm.c (x_display_and_set_cursor): Set pre-edit area.
Gerd Moellmann <gerd@gnu.org>
parents:
27542
diff
changeset
|
7378 #ifdef HAVE_X_I18N |
|
1d5c785bca99
* xterm.c (x_display_and_set_cursor): Set pre-edit area.
Gerd Moellmann <gerd@gnu.org>
parents:
27542
diff
changeset
|
7379 if (w == XWINDOW (f->selected_window)) |
|
1d5c785bca99
* xterm.c (x_display_and_set_cursor): Set pre-edit area.
Gerd Moellmann <gerd@gnu.org>
parents:
27542
diff
changeset
|
7380 if (FRAME_XIC (f) && (FRAME_XIC_STYLE (f) & XIMPreeditPosition)) |
|
1d5c785bca99
* xterm.c (x_display_and_set_cursor): Set pre-edit area.
Gerd Moellmann <gerd@gnu.org>
parents:
27542
diff
changeset
|
7381 xic_set_preeditarea (w, x, y); |
|
1d5c785bca99
* xterm.c (x_display_and_set_cursor): Set pre-edit area.
Gerd Moellmann <gerd@gnu.org>
parents:
27542
diff
changeset
|
7382 #endif |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7383 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7384 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7385 #ifndef XFlush |
| 771 | 7386 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
|
7387 XFlush (FRAME_X_DISPLAY (f)); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7388 #endif |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7389 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7390 |
| 286 | 7391 |
| 7392 /* Icons. */ | |
| 7393 | |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
7394 /* Make the x-window of frame F use the gnu icon bitmap. */ |
| 286 | 7395 |
| 7396 int | |
|
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
7397 x_bitmap_icon (f, file) |
| 771 | 7398 struct frame *f; |
|
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
7399 Lisp_Object file; |
| 286 | 7400 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7401 int bitmap_id; |
| 286 | 7402 |
|
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
7403 if (FRAME_X_WINDOW (f) == 0) |
| 286 | 7404 return 1; |
| 7405 | |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7406 /* Free up our existing icon bitmap and mask 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
|
7407 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
|
7408 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
|
7409 f->output_data.x->icon_bitmap = 0; |
|
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
7410 |
|
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
7411 if (STRINGP (file)) |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7412 { |
|
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7413 #ifdef USE_GTK |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7414 /* Use gtk_window_set_icon_from_file () if available, |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7415 It's not restricted to bitmaps */ |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7416 if (xg_set_icon (f, file)) |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7417 return 0; |
|
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7418 #endif /* USE_GTK */ |
|
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7419 bitmap_id = x_create_bitmap_from_file (f, file); |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7420 x_create_bitmap_mask (f, bitmap_id); |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7421 } |
|
9542
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
7422 else |
|
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
7423 { |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7424 /* Create the GNU bitmap and mask if necessary. */ |
|
10755
e5f13cc95d02
(x_bitmap_icon): Fix test for unallocated icon bitmap.
Paul Reilly <pmr@pajato.com>
parents:
10743
diff
changeset
|
7425 if (FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id < 0) |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7426 { |
|
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7427 FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id |
|
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7428 = x_create_bitmap_from_data (f, gnu_bits, |
|
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7429 gnu_width, gnu_height); |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7430 x_create_bitmap_mask (f, FRAME_X_DISPLAY_INFO (f)->icon_bitmap_id); |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7431 } |
|
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7432 |
|
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7433 /* The first time we create the GNU bitmap and mask, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7434 this increments the ref-count one extra time. |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
7435 As a result, the GNU bitmap and mask are never freed. |
|
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
7436 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
|
7437 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
|
7438 |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
7439 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
|
7440 } |
|
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
7441 |
|
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
7442 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
|
7443 f->output_data.x->icon_bitmap = bitmap_id; |
| 286 | 7444 |
| 7445 return 0; | |
| 7446 } | |
| 7447 | |
| 7448 | |
|
12074
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7449 /* 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
|
7450 Use ICON_NAME as the text. */ |
| 286 | 7451 |
| 7452 int | |
| 771 | 7453 x_text_icon (f, icon_name) |
| 7454 struct frame *f; | |
| 286 | 7455 char *icon_name; |
| 7456 { | |
|
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
7457 if (FRAME_X_WINDOW (f) == 0) |
| 286 | 7458 return 1; |
| 7459 | |
|
12074
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7460 #ifdef HAVE_X11R4 |
|
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7461 { |
|
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7462 XTextProperty text; |
|
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7463 text.value = (unsigned char *) icon_name; |
|
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7464 text.encoding = XA_STRING; |
|
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7465 text.format = 8; |
|
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7466 text.nitems = strlen (icon_name); |
|
49644
834df49192b0
Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49600
diff
changeset
|
7467 XSetWMIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text); |
|
12074
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7468 } |
|
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7469 #else /* not HAVE_X11R4 */ |
|
49644
834df49192b0
Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49600
diff
changeset
|
7470 XSetIconName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), icon_name); |
|
12074
111aadc2521a
(x_text_icon): Do call XSetIconName or XSetWMIconName.
Karl Heuer <kwzh@gnu.org>
parents:
12000
diff
changeset
|
7471 #endif /* not HAVE_X11R4 */ |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
7472 |
|
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
7473 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
|
7474 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
|
7475 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
|
7476 x_wm_set_icon_pixmap (f, 0); |
| 286 | 7477 |
| 7478 return 0; | |
| 7479 } | |
| 7480 | |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7481 #define X_ERROR_MESSAGE_SIZE 200 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7482 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7483 /* If non-nil, this should be a string. |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7484 It means catch X errors and store the error message in this string. */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7485 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7486 static Lisp_Object x_error_message_string; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7487 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7488 /* An X error handler which stores the error message in |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7489 x_error_message_string. This is called from x_error_handler if |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7490 x_catch_errors is in effect. */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7491 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7492 static void |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7493 x_error_catcher (display, error) |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7494 Display *display; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7495 XErrorEvent *error; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7496 { |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7497 XGetErrorText (display, error->error_code, |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
7498 SDATA (x_error_message_string), |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7499 X_ERROR_MESSAGE_SIZE); |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7500 } |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7501 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7502 /* Begin trapping X errors for display DPY. Actually we trap X errors |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7503 for all displays, but DPY should be the display you are actually |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7504 operating on. |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7505 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7506 After calling this function, X protocol errors no longer cause |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7507 Emacs to exit; instead, they are recorded in the string |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7508 stored in x_error_message_string. |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7509 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7510 Calling x_check_errors signals an Emacs error if an X error has |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7511 occurred since the last call to x_catch_errors or x_check_errors. |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7512 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7513 Calling x_uncatch_errors resumes the normal error handling. */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7514 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7515 void x_check_errors (); |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7516 static Lisp_Object x_catch_errors_unwind (); |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7517 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7518 int |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7519 x_catch_errors (dpy) |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7520 Display *dpy; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7521 { |
|
46293
1fb8f75062c6
Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents:
46159
diff
changeset
|
7522 int count = SPECPDL_INDEX (); |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7523 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7524 /* Make sure any errors from previous requests have been dealt with. */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7525 XSync (dpy, False); |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7526 |
|
49054
6b6ac8aa78d2
(x_catch_errors): Save dpy using make_save_value.
Richard M. Stallman <rms@gnu.org>
parents:
48383
diff
changeset
|
7527 record_unwind_protect (x_catch_errors_unwind, |
|
6b6ac8aa78d2
(x_catch_errors): Save dpy using make_save_value.
Richard M. Stallman <rms@gnu.org>
parents:
48383
diff
changeset
|
7528 Fcons (make_save_value (dpy, 0), |
|
6b6ac8aa78d2
(x_catch_errors): Save dpy using make_save_value.
Richard M. Stallman <rms@gnu.org>
parents:
48383
diff
changeset
|
7529 x_error_message_string)); |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7530 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7531 x_error_message_string = make_uninit_string (X_ERROR_MESSAGE_SIZE); |
|
46435
278371336b60
* xterm.c (x_catch_errors, x_clear_errors): Use SSET.
Ken Raeburn <raeburn@raeburn.org>
parents:
46370
diff
changeset
|
7532 SSET (x_error_message_string, 0, 0); |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7533 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7534 return count; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7535 } |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7536 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7537 /* Unbind the binding that we made to check for X errors. */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7538 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7539 static Lisp_Object |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7540 x_catch_errors_unwind (old_val) |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7541 Lisp_Object old_val; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7542 { |
|
56782
1dac05def6d8
* xterm.c (x_catch_errors_unwind): Do not XSync if display has closed.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
56729
diff
changeset
|
7543 Lisp_Object first = XCAR (old_val); |
|
1dac05def6d8
* xterm.c (x_catch_errors_unwind): Do not XSync if display has closed.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
56729
diff
changeset
|
7544 Display *dpy = XSAVE_VALUE (first)->pointer; |
|
1dac05def6d8
* xterm.c (x_catch_errors_unwind): Do not XSync if display has closed.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
56729
diff
changeset
|
7545 |
|
1dac05def6d8
* xterm.c (x_catch_errors_unwind): Do not XSync if display has closed.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
56729
diff
changeset
|
7546 /* The display may have been closed before this function is called. |
|
1dac05def6d8
* xterm.c (x_catch_errors_unwind): Do not XSync if display has closed.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
56729
diff
changeset
|
7547 Check if it is still open before calling XSync. */ |
|
1dac05def6d8
* xterm.c (x_catch_errors_unwind): Do not XSync if display has closed.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
56729
diff
changeset
|
7548 if (x_display_info_for_display (dpy) != 0) |
|
57953
95edcd1fae73
* xterm.c (handle_one_xevent): Don't queue X selection events
Kim F. Storm <storm@cua.dk>
parents:
57901
diff
changeset
|
7549 { |
|
95edcd1fae73
* xterm.c (handle_one_xevent): Don't queue X selection events
Kim F. Storm <storm@cua.dk>
parents:
57901
diff
changeset
|
7550 BLOCK_INPUT; |
|
95edcd1fae73
* xterm.c (handle_one_xevent): Don't queue X selection events
Kim F. Storm <storm@cua.dk>
parents:
57901
diff
changeset
|
7551 XSync (dpy, False); |
|
95edcd1fae73
* xterm.c (handle_one_xevent): Don't queue X selection events
Kim F. Storm <storm@cua.dk>
parents:
57901
diff
changeset
|
7552 UNBLOCK_INPUT; |
|
95edcd1fae73
* xterm.c (handle_one_xevent): Don't queue X selection events
Kim F. Storm <storm@cua.dk>
parents:
57901
diff
changeset
|
7553 } |
|
49054
6b6ac8aa78d2
(x_catch_errors): Save dpy using make_save_value.
Richard M. Stallman <rms@gnu.org>
parents:
48383
diff
changeset
|
7554 |
|
6b6ac8aa78d2
(x_catch_errors): Save dpy using make_save_value.
Richard M. Stallman <rms@gnu.org>
parents:
48383
diff
changeset
|
7555 x_error_message_string = XCDR (old_val); |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7556 return Qnil; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7557 } |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7558 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7559 /* If any X protocol errors have arrived since the last call to |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7560 x_catch_errors or x_check_errors, signal an Emacs error using |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7561 sprintf (a buffer, FORMAT, the x error message text) as the text. */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7562 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7563 void |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7564 x_check_errors (dpy, format) |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7565 Display *dpy; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7566 char *format; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7567 { |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7568 /* Make sure to catch any errors incurred so far. */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7569 XSync (dpy, False); |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7570 |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
7571 if (SREF (x_error_message_string, 0)) |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
7572 error (format, SDATA (x_error_message_string)); |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7573 } |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7574 |
|
17953
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
7575 /* Nonzero if we had any X protocol errors |
|
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
7576 since we did x_catch_errors on DPY. */ |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7577 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7578 int |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7579 x_had_errors_p (dpy) |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7580 Display *dpy; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7581 { |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7582 /* Make sure to catch any errors incurred so far. */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7583 XSync (dpy, False); |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7584 |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
7585 return SREF (x_error_message_string, 0) != 0; |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7586 } |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7587 |
|
17953
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
7588 /* Forget about any errors we have had, since we did x_catch_errors on DPY. */ |
|
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
7589 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7590 void |
|
17953
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
7591 x_clear_errors (dpy) |
|
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
7592 Display *dpy; |
|
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
7593 { |
|
46435
278371336b60
* xterm.c (x_catch_errors, x_clear_errors): Use SSET.
Ken Raeburn <raeburn@raeburn.org>
parents:
46370
diff
changeset
|
7594 SSET (x_error_message_string, 0, 0); |
|
17953
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
7595 } |
|
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
7596 |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7597 /* Stop catching X protocol errors and let them make Emacs die. |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7598 DPY should be the display that was passed to x_catch_errors. |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7599 COUNT should be the value that was returned by |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7600 the corresponding call to x_catch_errors. */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7601 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7602 void |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7603 x_uncatch_errors (dpy, count) |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7604 Display *dpy; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7605 int count; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7606 { |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7607 unbind_to (count, Qnil); |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7608 } |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7609 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7610 #if 0 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7611 static unsigned int x_wire_count; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7612 x_trace_wire () |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7613 { |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7614 fprintf (stderr, "Lib call: %d\n", ++x_wire_count); |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7615 } |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7616 #endif /* ! 0 */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7617 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7618 |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7619 /* Handle SIGPIPE, which can happen when the connection to a server |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7620 simply goes away. SIGPIPE is handled by x_connection_signal. |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7621 Don't need to do anything, because the write which caused the |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7622 SIGPIPE will fail, causing Xlib to invoke the X IO error handler, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7623 which will do the appropriate cleanup for us. */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7624 |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7625 static SIGTYPE |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7626 x_connection_signal (signalnum) /* If we don't have an argument, */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7627 int signalnum; /* some compilers complain in signal calls. */ |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7628 { |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7629 #ifdef USG |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7630 /* USG systems forget handlers when they are used; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7631 must reestablish each time */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7632 signal (signalnum, x_connection_signal); |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7633 #endif /* USG */ |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7634 } |
|
34956
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7635 |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
7636 |
|
34956
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7637 /************************************************************************ |
|
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7638 Handling X errors |
|
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7639 ************************************************************************/ |
|
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7640 |
|
39586
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7641 /* Error message passed to x_connection_closed. */ |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7642 |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7643 static char *error_msg; |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7644 |
| 40370 | 7645 /* Function installed as fatal_error_signal_hook in |
|
39586
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7646 x_connection_closed. Print the X error message, and exit normally, |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7647 instead of dumping core when XtCloseDisplay fails. */ |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7648 |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7649 static void |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7650 x_fatal_error_signal () |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7651 { |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7652 fprintf (stderr, "%s\n", error_msg); |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7653 exit (70); |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7654 } |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7655 |
|
34956
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7656 /* Handle the loss of connection to display DPY. ERROR_MESSAGE is |
|
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7657 the text of an error message that lead to the connection loss. */ |
|
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
7658 |
| 621 | 7659 static SIGTYPE |
|
34673
77cda2c018e5
(x_connection_closed): Prevent being called recursively
Gerd Moellmann <gerd@gnu.org>
parents:
34621
diff
changeset
|
7660 x_connection_closed (dpy, error_message) |
|
77cda2c018e5
(x_connection_closed): Prevent being called recursively
Gerd Moellmann <gerd@gnu.org>
parents:
34621
diff
changeset
|
7661 Display *dpy; |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7662 char *error_message; |
| 621 | 7663 { |
|
34673
77cda2c018e5
(x_connection_closed): Prevent being called recursively
Gerd Moellmann <gerd@gnu.org>
parents:
34621
diff
changeset
|
7664 struct x_display_info *dpyinfo = x_display_info_for_display (dpy); |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7665 Lisp_Object frame, tail; |
|
34956
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7666 int count; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7667 |
|
39586
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7668 error_msg = (char *) alloca (strlen (error_message) + 1); |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7669 strcpy (error_msg, error_message); |
|
34949
bbd0e7b5043a
(x_connection_closed): Set handling_signal to 0 at
Gerd Moellmann <gerd@gnu.org>
parents:
34869
diff
changeset
|
7670 handling_signal = 0; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7671 |
|
34956
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7672 /* Prevent being called recursively because of an error condition |
|
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7673 below. Otherwise, we might end up with printing ``can't find per |
|
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7674 display information'' in the recursive call instead of printing |
|
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7675 the original message here. */ |
|
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7676 count = x_catch_errors (dpy); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7677 |
| 34213 | 7678 /* We have to close the display to inform Xt that it doesn't |
| 7679 exist anymore. If we don't, Xt will continue to wait for | |
| 7680 events from the display. As a consequence, a sequence of | |
| 7681 | |
| 7682 M-x make-frame-on-display RET :1 RET | |
| 7683 ...kill the new frame, so that we get an IO error... | |
| 7684 M-x make-frame-on-display RET :1 RET | |
| 7685 | |
| 7686 will indefinitely wait in Xt for events for display `:1', opened | |
| 7687 in the first class to make-frame-on-display. | |
| 7688 | |
| 7689 Closing the display is reported to lead to a bus error on | |
| 7690 OpenWindows in certain situations. I suspect that is a bug | |
| 7691 in OpenWindows. I don't know how to cicumvent it here. */ | |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7692 |
|
17825
281d99590839
(dumpglyphs): Draw glyphs one by one if the font for
Kenichi Handa <handa@m17n.org>
parents:
17720
diff
changeset
|
7693 #ifdef USE_X_TOOLKIT |
|
35309
cb7e1d7b6b67
(x_connection_closed) [USE_X_TOOLKIT]: If
Gerd Moellmann <gerd@gnu.org>
parents:
35276
diff
changeset
|
7694 /* If DPYINFO is null, this means we didn't open the display |
|
cb7e1d7b6b67
(x_connection_closed) [USE_X_TOOLKIT]: If
Gerd Moellmann <gerd@gnu.org>
parents:
35276
diff
changeset
|
7695 in the first place, so don't try to close it. */ |
|
cb7e1d7b6b67
(x_connection_closed) [USE_X_TOOLKIT]: If
Gerd Moellmann <gerd@gnu.org>
parents:
35276
diff
changeset
|
7696 if (dpyinfo) |
|
39586
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7697 { |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7698 extern void (*fatal_error_signal_hook) P_ ((void)); |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7699 fatal_error_signal_hook = x_fatal_error_signal; |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7700 XtCloseDisplay (dpy); |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7701 fatal_error_signal_hook = NULL; |
|
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7702 } |
|
17825
281d99590839
(dumpglyphs): Draw glyphs one by one if the font for
Kenichi Handa <handa@m17n.org>
parents:
17720
diff
changeset
|
7703 #endif |
| 34213 | 7704 |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7705 #ifdef USE_GTK |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7706 if (dpyinfo) |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7707 xg_display_close (dpyinfo->display); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7708 #endif |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
7709 |
| 34213 | 7710 /* Indicate that this display is dead. */ |
|
29536
4def8a9e785a
* xterm.c (x_connection_closed): If dpyinfo is NULL, don't try to
Ken Raeburn <raeburn@raeburn.org>
parents:
29512
diff
changeset
|
7711 if (dpyinfo) |
|
4def8a9e785a
* xterm.c (x_connection_closed): If dpyinfo is NULL, don't try to
Ken Raeburn <raeburn@raeburn.org>
parents:
29512
diff
changeset
|
7712 dpyinfo->display = 0; |
|
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
7713 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7714 /* First delete frames whose mini-buffers are on frames |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7715 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
|
7716 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
|
7717 { |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7718 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
|
7719 minibuf_frame |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7720 = 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
|
7721 if (FRAME_X_P (XFRAME (frame)) |
|
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
7722 && FRAME_X_P (XFRAME (minibuf_frame)) |
|
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
7723 && ! EQ (frame, minibuf_frame) |
|
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
7724 && 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
|
7725 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
|
7726 } |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7727 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7728 /* Now delete all remaining frames on the dead display. |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7729 We are now sure none of these is used as the mini-buffer |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7730 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
|
7731 FOR_EACH_FRAME (tail, frame) |
|
10921
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
7732 if (FRAME_X_P (XFRAME (frame)) |
|
bf33c9179a6b
(x_connection_closed): Ignore non-X frames.
Richard M. Stallman <rms@gnu.org>
parents:
10755
diff
changeset
|
7733 && 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
|
7734 { |
|
0d37c1e81c0d
(x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents:
11901
diff
changeset
|
7735 /* 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
|
7736 trying to find a replacement. */ |
|
0d37c1e81c0d
(x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents:
11901
diff
changeset
|
7737 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
|
7738 Fdelete_frame (frame, Qt); |
|
0d37c1e81c0d
(x_connection_closed): Unblock input, first thing.
Karl Heuer <kwzh@gnu.org>
parents:
11901
diff
changeset
|
7739 } |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7740 |
|
13727
9eb09adbcb38
(x_connection_closed): Don't delete dpyinfo if it's null.
Karl Heuer <kwzh@gnu.org>
parents:
13633
diff
changeset
|
7741 if (dpyinfo) |
|
9eb09adbcb38
(x_connection_closed): Don't delete dpyinfo if it's null.
Karl Heuer <kwzh@gnu.org>
parents:
13633
diff
changeset
|
7742 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
|
7743 |
|
34956
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7744 x_uncatch_errors (dpy, count); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7745 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7746 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
|
7747 { |
|
39586
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7748 fprintf (stderr, "%s\n", error_msg); |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7749 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
|
7750 exit (70); |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7751 } |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7752 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7753 /* 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
|
7754 #ifdef SIGIO |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7755 sigunblock (sigmask (SIGIO)); |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7756 #endif |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7757 sigunblock (sigmask (SIGALRM)); |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7758 TOTALLY_UNBLOCK_INPUT; |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7759 |
|
15526
926ef4afc174
(x_connection_closed): Call clear_waiting_for_input.
Richard M. Stallman <rms@gnu.org>
parents:
15521
diff
changeset
|
7760 clear_waiting_for_input (); |
|
39586
2ca67ed01cd8
(XTread_socket): Return a non_ascii_keystroke for
Gerd Moellmann <gerd@gnu.org>
parents:
39474
diff
changeset
|
7761 error ("%s", error_msg); |
|
34956
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7762 } |
|
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7763 |
|
59745
2177d96b9c08
(x_error_quitter): Add a prototype. Make it static again.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59725
diff
changeset
|
7764 /* We specifically use it before defining it, so that gcc doesn't inline it, |
|
2177d96b9c08
(x_error_quitter): Add a prototype. Make it static again.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59725
diff
changeset
|
7765 otherwise gdb doesn't know how to properly put a breakpoint on it. */ |
|
2177d96b9c08
(x_error_quitter): Add a prototype. Make it static again.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59725
diff
changeset
|
7766 static void x_error_quitter (Display *display, XErrorEvent *error); |
|
2177d96b9c08
(x_error_quitter): Add a prototype. Make it static again.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59725
diff
changeset
|
7767 |
|
59725
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7768 /* This is the first-level handler for X protocol errors. |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7769 It calls x_error_quitter or x_error_catcher. */ |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7770 |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7771 static int |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7772 x_error_handler (display, error) |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7773 Display *display; |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7774 XErrorEvent *error; |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7775 { |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7776 if (! NILP (x_error_message_string)) |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7777 x_error_catcher (display, error); |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7778 else |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7779 x_error_quitter (display, error); |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7780 return 0; |
|
a8fd332cc484
(x_error_quitter): No longer static, and moved after x_error_handler.
Richard M. Stallman <rms@gnu.org>
parents:
59655
diff
changeset
|
7781 } |
| 621 | 7782 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7783 /* 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
|
7784 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
|
7785 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
|
7786 |
|
59893
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7787 /* .gdbinit puts a breakpoint here, so make sure it is not inlined. */ |
|
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7788 |
|
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7789 #if __GNUC__ >= 3 /* On GCC 3.0 we might get a warning. */ |
|
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7790 #define NO_INLINE __attribute__((noinline)) |
|
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7791 #else |
|
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7792 #define NO_INLINE |
|
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7793 #endif |
|
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7794 |
|
62217
49a8b890e7a5
(noinclude): Add #undef.
Richard M. Stallman <rms@gnu.org>
parents:
61181
diff
changeset
|
7795 /* Some versions of GNU/Linux define noinline in their headers. */ |
|
49a8b890e7a5
(noinclude): Add #undef.
Richard M. Stallman <rms@gnu.org>
parents:
61181
diff
changeset
|
7796 |
| 62218 | 7797 #ifdef noinline |
| 7798 #undef noinline | |
|
62217
49a8b890e7a5
(noinclude): Add #undef.
Richard M. Stallman <rms@gnu.org>
parents:
61181
diff
changeset
|
7799 #endif |
|
49a8b890e7a5
(noinclude): Add #undef.
Richard M. Stallman <rms@gnu.org>
parents:
61181
diff
changeset
|
7800 |
|
59893
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7801 /* On older GCC versions, just putting x_error_quitter |
|
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7802 after x_error_handler prevents inlining into the former. */ |
|
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7803 |
|
c7a28d8cfff9
(x_error_quitter): On GCC 3 and up, specify noinline.
Richard M. Stallman <rms@gnu.org>
parents:
59750
diff
changeset
|
7804 static void NO_INLINE |
|
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
7805 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
|
7806 Display *display; |
|
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
7807 XErrorEvent *error; |
|
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
7808 { |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7809 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
|
7810 |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
7811 /* 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
|
7812 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
|
7813 |
|
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
7814 XGetErrorText (display, error->error_code, buf, sizeof (buf)); |
|
15521
2b61a33a4576
(x_error_quitter): Delete newline from sprintf string.
Richard M. Stallman <rms@gnu.org>
parents:
15519
diff
changeset
|
7815 sprintf (buf1, "X protocol error: %s on protocol request %d", |
|
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
7816 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
|
7817 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
|
7818 } |
|
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
7819 |
|
34956
c26b7651dd9f
(x_connection_closed): Catch X errors around all
Gerd Moellmann <gerd@gnu.org>
parents:
34949
diff
changeset
|
7820 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7821 /* 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
|
7822 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
|
7823 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
|
7824 |
|
1875
f569bc4e9b8f
* xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents:
1841
diff
changeset
|
7825 static int |
|
f569bc4e9b8f
* xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents:
1841
diff
changeset
|
7826 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
|
7827 Display *display; |
|
f569bc4e9b8f
* xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents:
1841
diff
changeset
|
7828 { |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7829 char buf[256]; |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7830 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7831 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
|
7832 x_connection_closed (display, buf); |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
7833 return 0; |
|
1875
f569bc4e9b8f
* xterm.c (x_set_window_size): Call change_frame_size instead of
Jim Blandy <jimb@redhat.com>
parents:
1841
diff
changeset
|
7834 } |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
7835 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
7836 /* 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
|
7837 |
|
8291
9c6ddd14996b
(struct font_info): New field full_name.
Richard M. Stallman <rms@gnu.org>
parents:
8279
diff
changeset
|
7838 /* 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
|
7839 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
|
7840 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
|
7841 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
|
7842 |
|
3076
e3b3c67cf203
Arrange for font names to get fully resolved - no wildcards.
Jim Blandy <jimb@redhat.com>
parents:
3066
diff
changeset
|
7843 Lisp_Object |
| 771 | 7844 x_new_font (f, fontname) |
| 7845 struct frame *f; | |
| 286 | 7846 register char *fontname; |
| 7847 { | |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7848 struct font_info *fontp |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
7849 = FS_LOAD_FONT (f, 0, fontname, -1); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7850 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7851 if (!fontp) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7852 return Qnil; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7853 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7854 FRAME_FONT (f) = (XFontStruct *) (fontp->font); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7855 FRAME_BASELINE_OFFSET (f) = fontp->baseline_offset; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7856 FRAME_FONTSET (f) = -1; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7857 |
|
59206
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
7858 FRAME_COLUMN_WIDTH (f) = fontp->average_width; |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
7859 FRAME_SPACE_WIDTH (f) = fontp->space_width; |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7860 FRAME_LINE_HEIGHT (f) = FONT_HEIGHT (FRAME_FONT (f)); |
|
41721
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
7861 |
| 50097 | 7862 compute_fringe_widths (f, 1); |
|
41721
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
7863 |
|
9167
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
7864 /* Compute the scroll bar width in character columns. */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7865 if (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0) |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7866 { |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7867 int wid = FRAME_COLUMN_WIDTH (f); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7868 FRAME_CONFIG_SCROLL_BAR_COLS (f) |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7869 = (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) + wid-1) / wid; |
|
9167
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
7870 } |
|
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
7871 else |
|
19027
1171ca6f0281
(x_new_font): Follow the change in x_set_scroll_bar_width and make the
Richard M. Stallman <rms@gnu.org>
parents:
19021
diff
changeset
|
7872 { |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7873 int wid = FRAME_COLUMN_WIDTH (f); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7874 FRAME_CONFIG_SCROLL_BAR_COLS (f) = (14 + wid - 1) / wid; |
|
19027
1171ca6f0281
(x_new_font): Follow the change in x_set_scroll_bar_width and make the
Richard M. Stallman <rms@gnu.org>
parents:
19021
diff
changeset
|
7875 } |
|
9167
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
7876 |
| 771 | 7877 /* 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
|
7878 if (FRAME_X_WINDOW (f) != 0) |
| 286 | 7879 { |
|
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
7880 XSetFont (FRAME_X_DISPLAY (f), f->output_data.x->normal_gc, |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7881 FRAME_FONT (f)->fid); |
|
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
7882 XSetFont (FRAME_X_DISPLAY (f), f->output_data.x->reverse_gc, |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7883 FRAME_FONT (f)->fid); |
|
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
7884 XSetFont (FRAME_X_DISPLAY (f), f->output_data.x->cursor_gc, |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7885 FRAME_FONT (f)->fid); |
|
35506
5ad77d538e08
(x_new_font): Don't change a tooltip's size.
Gerd Moellmann <gerd@gnu.org>
parents:
35487
diff
changeset
|
7886 |
|
5ad77d538e08
(x_new_font): Don't change a tooltip's size.
Gerd Moellmann <gerd@gnu.org>
parents:
35487
diff
changeset
|
7887 /* Don't change the size of a tip frame; there's no point in |
|
5ad77d538e08
(x_new_font): Don't change a tooltip's size.
Gerd Moellmann <gerd@gnu.org>
parents:
35487
diff
changeset
|
7888 doing it because it's done in Fx_show_tip, and it leads to |
|
5ad77d538e08
(x_new_font): Don't change a tooltip's size.
Gerd Moellmann <gerd@gnu.org>
parents:
35487
diff
changeset
|
7889 problems because the tip frame has no widget. */ |
|
5ad77d538e08
(x_new_font): Don't change a tooltip's size.
Gerd Moellmann <gerd@gnu.org>
parents:
35487
diff
changeset
|
7890 if (NILP (tip_frame) || XFRAME (tip_frame) != f) |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7891 x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f)); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7892 } |
| 286 | 7893 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7894 return build_string (fontp->full_name); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7895 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7896 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7897 /* Give frame F the fontset named FONTSETNAME as its default font, and |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7898 return the full name of that fontset. FONTSETNAME may be a wildcard |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
7899 pattern; in that case, we choose some fontset that fits the pattern. |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
7900 The return value shows which fontset we chose. */ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7901 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7902 Lisp_Object |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7903 x_new_fontset (f, fontsetname) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7904 struct frame *f; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7905 char *fontsetname; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7906 { |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
7907 int fontset = fs_query_fontset (build_string (fontsetname), 0); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7908 Lisp_Object result; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7909 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7910 if (fontset < 0) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7911 return Qnil; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7912 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7913 if (FRAME_FONTSET (f) == fontset) |
|
18347
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
7914 /* This fontset is already set in frame F. There's nothing more |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
7915 to do. */ |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
7916 return fontset_name (fontset); |
|
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
7917 |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
7918 result = x_new_font (f, (SDATA (fontset_ascii (fontset)))); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7919 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7920 if (!STRINGP (result)) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7921 /* Can't load ASCII font. */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7922 return Qnil; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7923 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7924 /* Since x_new_font doesn't update any fontset information, do it now. */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
7925 FRAME_FONTSET (f) = fontset; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7926 |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7927 #ifdef HAVE_X_I18N |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7928 if (FRAME_XIC (f) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7929 && (FRAME_XIC_STYLE (f) & (XIMPreeditPosition | XIMStatusArea))) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
7930 xic_set_xfontset (f, SDATA (fontset_ascii (fontset))); |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7931 #endif |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7932 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
7933 return build_string (fontsetname); |
| 286 | 7934 } |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7935 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7936 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7937 /*********************************************************************** |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7938 X Input Methods |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7939 ***********************************************************************/ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7940 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7941 #ifdef HAVE_X_I18N |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7942 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7943 #ifdef HAVE_X11R6 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7944 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7945 /* XIM destroy callback function, which is called whenever the |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7946 connection to input method XIM dies. CLIENT_DATA contains a |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7947 pointer to the x_display_info structure corresponding to XIM. */ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7948 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7949 static void |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7950 xim_destroy_callback (xim, client_data, call_data) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7951 XIM xim; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7952 XPointer client_data; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7953 XPointer call_data; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7954 { |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7955 struct x_display_info *dpyinfo = (struct x_display_info *) client_data; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7956 Lisp_Object frame, tail; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7957 |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7958 BLOCK_INPUT; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7959 |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7960 /* No need to call XDestroyIC.. */ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7961 FOR_EACH_FRAME (tail, frame) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7962 { |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7963 struct frame *f = XFRAME (frame); |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7964 if (FRAME_X_DISPLAY_INFO (f) == dpyinfo) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7965 { |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7966 FRAME_XIC (f) = NULL; |
|
57633
ead4249849ac
* xterm.h (x_output): New member `xic_base_fontname'.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
57598
diff
changeset
|
7967 xic_free_xfontset (f); |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7968 } |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7969 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
7970 |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7971 /* No need to call XCloseIM. */ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7972 dpyinfo->xim = NULL; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7973 XFree (dpyinfo->xim_styles); |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7974 UNBLOCK_INPUT; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7975 } |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7976 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7977 #endif /* HAVE_X11R6 */ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7978 |
| 48085 | 7979 #ifdef HAVE_X11R6 |
| 7980 /* This isn't prototyped in OSF 5.0 or 5.1a. */ | |
| 7981 extern char *XSetIMValues P_ ((XIM, ...)); | |
| 7982 #endif | |
| 7983 | |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7984 /* Open the connection to the XIM server on display DPYINFO. |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7985 RESOURCE_NAME is the resource name Emacs uses. */ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7986 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7987 static void |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7988 xim_open_dpy (dpyinfo, resource_name) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7989 struct x_display_info *dpyinfo; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7990 char *resource_name; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7991 { |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7992 XIM xim; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
7993 |
|
52076
039e1c55561e
(xim_open_dpy, xim_initialize, xim_close_dpy):
Richard M. Stallman <rms@gnu.org>
parents:
51953
diff
changeset
|
7994 #ifdef HAVE_XIM |
| 51129 | 7995 if (use_xim) |
| 7996 { | |
| 7997 xim = XOpenIM (dpyinfo->display, dpyinfo->xrdb, resource_name, | |
| 7998 EMACS_CLASS); | |
| 7999 dpyinfo->xim = xim; | |
| 8000 | |
| 8001 if (xim) | |
| 8002 { | |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8003 #ifdef HAVE_X11R6 |
| 51129 | 8004 XIMCallback destroy; |
| 8005 #endif | |
| 8006 | |
| 8007 /* Get supported styles and XIM values. */ | |
| 8008 XGetIMValues (xim, XNQueryInputStyle, &dpyinfo->xim_styles, NULL); | |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8009 |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8010 #ifdef HAVE_X11R6 |
| 51129 | 8011 destroy.callback = xim_destroy_callback; |
| 8012 destroy.client_data = (XPointer)dpyinfo; | |
| 8013 XSetIMValues (xim, XNDestroyCallback, &destroy, NULL); | |
| 8014 #endif | |
| 8015 } | |
| 8016 } | |
| 8017 | |
| 8018 else | |
|
52076
039e1c55561e
(xim_open_dpy, xim_initialize, xim_close_dpy):
Richard M. Stallman <rms@gnu.org>
parents:
51953
diff
changeset
|
8019 #endif /* HAVE_XIM */ |
| 51129 | 8020 dpyinfo->xim = NULL; |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8021 } |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8022 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8023 |
|
28142
156c32f18198
(xim_close_dpy, xim_initialize): Use X11R6-style XIM
Gerd Moellmann <gerd@gnu.org>
parents:
28139
diff
changeset
|
8024 #ifdef HAVE_X11R6_XIM |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8025 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8026 struct xim_inst_t |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8027 { |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8028 struct x_display_info *dpyinfo; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8029 char *resource_name; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8030 }; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8031 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8032 /* XIM instantiate callback function, which is called whenever an XIM |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
8033 server is available. DISPLAY is the display of the XIM. |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8034 CLIENT_DATA contains a pointer to an xim_inst_t structure created |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8035 when the callback was registered. */ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8036 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8037 static void |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8038 xim_instantiate_callback (display, client_data, call_data) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8039 Display *display; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8040 XPointer client_data; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8041 XPointer call_data; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8042 { |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8043 struct xim_inst_t *xim_inst = (struct xim_inst_t *) client_data; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8044 struct x_display_info *dpyinfo = xim_inst->dpyinfo; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8045 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8046 /* We don't support multiple XIM connections. */ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8047 if (dpyinfo->xim) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8048 return; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8049 |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8050 xim_open_dpy (dpyinfo, xim_inst->resource_name); |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8051 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8052 /* Create XIC for the existing frames on the same display, as long |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8053 as they have no XIC. */ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8054 if (dpyinfo->xim && dpyinfo->reference_count > 0) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8055 { |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8056 Lisp_Object tail, frame; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8057 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8058 BLOCK_INPUT; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8059 FOR_EACH_FRAME (tail, frame) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8060 { |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8061 struct frame *f = XFRAME (frame); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8062 |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8063 if (FRAME_X_DISPLAY_INFO (f) == xim_inst->dpyinfo) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8064 if (FRAME_XIC (f) == NULL) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8065 { |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8066 create_frame_xic (f); |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8067 if (FRAME_XIC_STYLE (f) & XIMStatusArea) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8068 xic_set_statusarea (f); |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8069 if (FRAME_XIC_STYLE (f) & XIMPreeditPosition) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8070 { |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8071 struct window *w = XWINDOW (f->selected_window); |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8072 xic_set_preeditarea (w, w->cursor.x, w->cursor.y); |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8073 } |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8074 } |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8075 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8076 |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8077 UNBLOCK_INPUT; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8078 } |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8079 } |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8080 |
|
28142
156c32f18198
(xim_close_dpy, xim_initialize): Use X11R6-style XIM
Gerd Moellmann <gerd@gnu.org>
parents:
28139
diff
changeset
|
8081 #endif /* HAVE_X11R6_XIM */ |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8082 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8083 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8084 /* Open a connection to the XIM server on display DPYINFO. |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8085 RESOURCE_NAME is the resource name for Emacs. On X11R5, open the |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8086 connection only at the first time. On X11R6, open the connection |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8087 in the XIM instantiate callback function. */ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8088 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8089 static void |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8090 xim_initialize (dpyinfo, resource_name) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8091 struct x_display_info *dpyinfo; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8092 char *resource_name; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8093 { |
|
52076
039e1c55561e
(xim_open_dpy, xim_initialize, xim_close_dpy):
Richard M. Stallman <rms@gnu.org>
parents:
51953
diff
changeset
|
8094 #ifdef HAVE_XIM |
| 51129 | 8095 if (use_xim) |
| 8096 { | |
|
28142
156c32f18198
(xim_close_dpy, xim_initialize): Use X11R6-style XIM
Gerd Moellmann <gerd@gnu.org>
parents:
28139
diff
changeset
|
8097 #ifdef HAVE_X11R6_XIM |
| 51129 | 8098 struct xim_inst_t *xim_inst; |
| 8099 int len; | |
| 8100 | |
| 8101 dpyinfo->xim = NULL; | |
| 8102 xim_inst = (struct xim_inst_t *) xmalloc (sizeof (struct xim_inst_t)); | |
| 8103 xim_inst->dpyinfo = dpyinfo; | |
| 8104 len = strlen (resource_name); | |
| 8105 xim_inst->resource_name = (char *) xmalloc (len + 1); | |
| 8106 bcopy (resource_name, xim_inst->resource_name, len + 1); | |
| 8107 XRegisterIMInstantiateCallback (dpyinfo->display, dpyinfo->xrdb, | |
| 8108 resource_name, EMACS_CLASS, | |
| 8109 xim_instantiate_callback, | |
|
51649
fab11a57338c
(xim_initialize): Use XRegisterIMInstantiateCallback_arg6.
Dave Love <fx@gnu.org>
parents:
51576
diff
changeset
|
8110 /* This is XPointer in XFree86 |
|
fab11a57338c
(xim_initialize): Use XRegisterIMInstantiateCallback_arg6.
Dave Love <fx@gnu.org>
parents:
51576
diff
changeset
|
8111 but (XPointer *) on Tru64, at |
|
fab11a57338c
(xim_initialize): Use XRegisterIMInstantiateCallback_arg6.
Dave Love <fx@gnu.org>
parents:
51576
diff
changeset
|
8112 least, hence the configure test. */ |
|
51953
610a102ed36c
(xim_initialize): Redo 6/24 change.
Richard M. Stallman <rms@gnu.org>
parents:
51897
diff
changeset
|
8113 (XRegisterIMInstantiateCallback_arg6) xim_inst); |
|
28142
156c32f18198
(xim_close_dpy, xim_initialize): Use X11R6-style XIM
Gerd Moellmann <gerd@gnu.org>
parents:
28139
diff
changeset
|
8114 #else /* not HAVE_X11R6_XIM */ |
| 51129 | 8115 dpyinfo->xim = NULL; |
| 8116 xim_open_dpy (dpyinfo, resource_name); | |
|
28142
156c32f18198
(xim_close_dpy, xim_initialize): Use X11R6-style XIM
Gerd Moellmann <gerd@gnu.org>
parents:
28139
diff
changeset
|
8117 #endif /* not HAVE_X11R6_XIM */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8118 |
| 51129 | 8119 } |
| 8120 else | |
|
52076
039e1c55561e
(xim_open_dpy, xim_initialize, xim_close_dpy):
Richard M. Stallman <rms@gnu.org>
parents:
51953
diff
changeset
|
8121 #endif /* HAVE_XIM */ |
| 51129 | 8122 dpyinfo->xim = NULL; |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8123 } |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8124 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8125 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8126 /* Close the connection to the XIM server on display DPYINFO. */ |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8127 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8128 static void |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8129 xim_close_dpy (dpyinfo) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8130 struct x_display_info *dpyinfo; |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8131 { |
|
52076
039e1c55561e
(xim_open_dpy, xim_initialize, xim_close_dpy):
Richard M. Stallman <rms@gnu.org>
parents:
51953
diff
changeset
|
8132 #ifdef HAVE_XIM |
| 51129 | 8133 if (use_xim) |
| 8134 { | |
|
28142
156c32f18198
(xim_close_dpy, xim_initialize): Use X11R6-style XIM
Gerd Moellmann <gerd@gnu.org>
parents:
28139
diff
changeset
|
8135 #ifdef HAVE_X11R6_XIM |
| 51129 | 8136 if (dpyinfo->display) |
| 8137 XUnregisterIMInstantiateCallback (dpyinfo->display, dpyinfo->xrdb, | |
| 8138 NULL, EMACS_CLASS, | |
| 8139 xim_instantiate_callback, NULL); | |
|
28142
156c32f18198
(xim_close_dpy, xim_initialize): Use X11R6-style XIM
Gerd Moellmann <gerd@gnu.org>
parents:
28139
diff
changeset
|
8140 #endif /* not HAVE_X11R6_XIM */ |
| 51129 | 8141 if (dpyinfo->display) |
| 8142 XCloseIM (dpyinfo->xim); | |
| 8143 dpyinfo->xim = NULL; | |
| 8144 XFree (dpyinfo->xim_styles); | |
| 8145 } | |
|
52076
039e1c55561e
(xim_open_dpy, xim_initialize, xim_close_dpy):
Richard M. Stallman <rms@gnu.org>
parents:
51953
diff
changeset
|
8146 #endif /* HAVE_XIM */ |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8147 } |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8148 |
|
28142
156c32f18198
(xim_close_dpy, xim_initialize): Use X11R6-style XIM
Gerd Moellmann <gerd@gnu.org>
parents:
28139
diff
changeset
|
8149 #endif /* not HAVE_X11R6_XIM */ |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8150 |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8151 |
| 286 | 8152 |
|
14826
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
8153 /* Calculate the absolute position in frame F |
|
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
8154 from its current recorded position values and gravity. */ |
|
eec0abb31126
Comment/whitespace change.
Richard M. Stallman <rms@gnu.org>
parents:
14801
diff
changeset
|
8155 |
| 21514 | 8156 void |
|
7264
a701bffa0f9d
(x_calc_absolute_position): Use size_hint_flags.
Richard M. Stallman <rms@gnu.org>
parents:
7262
diff
changeset
|
8157 x_calc_absolute_position (f) |
| 771 | 8158 struct frame *f; |
| 286 | 8159 { |
|
4630
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
8160 int win_x = 0, win_y = 0; |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8161 int flags = f->size_hint_flags; |
|
11896
507a45c7e911
(x_calc_absolute_position): Use menubar_height field.
Karl Heuer <kwzh@gnu.org>
parents:
11807
diff
changeset
|
8162 |
|
17953
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
8163 /* We have nothing to do if the current position |
|
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
8164 is already for the top-left corner. */ |
|
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
8165 if (! ((flags & XNegative) || (flags & YNegative))) |
|
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
8166 return; |
|
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
8167 |
|
4630
70247ce8b381
(x_wm_set_size_hint): New args spec_x and spec_y.
Richard M. Stallman <rms@gnu.org>
parents:
4493
diff
changeset
|
8168 /* 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
|
8169 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
|
8170 if (flags & XNegative) |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8171 f->left_pos = (FRAME_X_DISPLAY_INFO (f)->width |
|
58891
75cac0943699
* xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
58403
diff
changeset
|
8172 - FRAME_PIXEL_WIDTH (f) + f->left_pos); |
| 771 | 8173 |
|
34099
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8174 { |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8175 int height = FRAME_PIXEL_HEIGHT (f); |
|
34099
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8176 |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8177 #if defined USE_X_TOOLKIT && defined USE_MOTIF |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8178 /* Something is fishy here. When using Motif, starting Emacs with |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8179 `-g -0-0', the frame appears too low by a few pixels. |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8180 |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8181 This seems to be so because initially, while Emacs is starting, |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8182 the column widget's height and the frame's pixel height are |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8183 different. The column widget's height is the right one. In |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8184 later invocations, when Emacs is up, the frame's pixel height |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8185 is right, though. |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8186 |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8187 It's not obvious where the initial small difference comes from. |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8188 2000-12-01, gerd. */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8189 |
|
34099
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8190 XtVaGetValues (f->output_data.x->column_widget, XtNheight, &height, NULL); |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8191 #endif |
|
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8192 |
|
7262
68fc80bf10df
(x_wm_set_size_hint): Don't try to handle negative positions.
Richard M. Stallman <rms@gnu.org>
parents:
7210
diff
changeset
|
8193 if (flags & YNegative) |
|
58891
75cac0943699
* xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
58403
diff
changeset
|
8194 f->top_pos = (FRAME_X_DISPLAY_INFO (f)->height - height + f->top_pos); |
|
34099
06ab9f74a16b
(x_calc_absolute_position): Don't subtract menubar's
Gerd Moellmann <gerd@gnu.org>
parents:
34066
diff
changeset
|
8195 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8196 |
|
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
8197 /* 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
|
8198 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
|
8199 so the flags should correspond. */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8200 f->size_hint_flags &= ~ (XNegative | YNegative); |
| 286 | 8201 } |
| 8202 | |
|
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
8203 /* 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
|
8204 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
|
8205 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
|
8206 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
|
8207 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
|
8208 |
| 21514 | 8209 void |
|
6934
e0ab4f59004e
(dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents:
6883
diff
changeset
|
8210 x_set_offset (f, xoff, yoff, change_gravity) |
| 771 | 8211 struct frame *f; |
| 286 | 8212 register int xoff, yoff; |
|
6934
e0ab4f59004e
(dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents:
6883
diff
changeset
|
8213 int change_gravity; |
| 286 | 8214 { |
|
11901
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
8215 int modified_top, modified_left; |
|
8ecc60a02138
(x_set_offset): Add border_width when calling XMoveWindow.
Karl Heuer <kwzh@gnu.org>
parents:
11896
diff
changeset
|
8216 |
|
11988
a1ce6f699967
(x_set_offset): Distinguish CHANGE_GRAVITY < 0 case.
Karl Heuer <kwzh@gnu.org>
parents:
11953
diff
changeset
|
8217 if (change_gravity > 0) |
|
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
8218 { |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8219 f->top_pos = yoff; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8220 f->left_pos = xoff; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8221 f->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
|
8222 if (xoff < 0) |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8223 f->size_hint_flags |= XNegative; |
|
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
8224 if (yoff < 0) |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8225 f->size_hint_flags |= YNegative; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8226 f->win_gravity = NorthWestGravity; |
|
7409
fe56a02838ba
(x_set_offset): Set gravity and size hint
Richard M. Stallman <rms@gnu.org>
parents:
7346
diff
changeset
|
8227 } |
|
7264
a701bffa0f9d
(x_calc_absolute_position): Use size_hint_flags.
Richard M. Stallman <rms@gnu.org>
parents:
7262
diff
changeset
|
8228 x_calc_absolute_position (f); |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
8229 |
| 286 | 8230 BLOCK_INPUT; |
|
11915
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
8231 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
|
8232 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8233 modified_left = f->left_pos; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8234 modified_top = f->top_pos; |
|
52546
4e5fa718d892
* xterm.c (x_set_offset): Take window manager decorations
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
8235 |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8236 if (FRAME_X_DISPLAY_INFO (f)->wm_type == X_WMTYPE_A) |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8237 { |
|
52754
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52753
diff
changeset
|
8238 /* Some WMs (twm, wmaker at least) has an offset that is smaller |
|
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52753
diff
changeset
|
8239 than the WM decorations. So we use the calculated offset instead |
|
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52753
diff
changeset
|
8240 of the WM decoration sizes here (x/y_pixels_outer_diff). */ |
|
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52753
diff
changeset
|
8241 modified_left += FRAME_X_OUTPUT (f)->move_offset_left; |
|
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52753
diff
changeset
|
8242 modified_top += FRAME_X_OUTPUT (f)->move_offset_top; |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8243 } |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8244 |
| 49322 | 8245 XMoveWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), |
| 8246 modified_left, modified_top); | |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8247 |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8248 if (FRAME_VISIBLE_P (f) |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8249 && FRAME_X_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN) |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8250 { |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8251 FRAME_X_OUTPUT (f)->check_expected_move = 1; |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8252 FRAME_X_OUTPUT (f)->expected_top = f->top_pos; |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8253 FRAME_X_OUTPUT (f)->expected_left = f->left_pos; |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8254 } |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8255 |
| 286 | 8256 UNBLOCK_INPUT; |
| 8257 } | |
| 8258 | |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8259 /* Check if we need to resize the frame due to a fullscreen request. |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8260 If so needed, resize the frame. */ |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8261 static void |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8262 x_check_fullscreen (f) |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8263 struct frame *f; |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8264 { |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8265 if (f->want_fullscreen & FULLSCREEN_BOTH) |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8266 { |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8267 int width, height, ign; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8268 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8269 x_real_positions (f, &f->left_pos, &f->top_pos); |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8270 |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8271 x_fullscreen_adjust (f, &width, &height, &ign, &ign); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8272 |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8273 /* We do not need to move the window, it shall be taken care of |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8274 when setting WM manager hints. |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8275 If the frame is visible already, the position is checked by |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8276 x_check_expected_move. */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8277 if (FRAME_COLS (f) != width || FRAME_LINES (f) != height) |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8278 { |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8279 change_frame_size (f, height, width, 0, 1, 0); |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8280 SET_FRAME_GARBAGED (f); |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8281 cancel_mouse_face (f); |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8282 |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8283 /* Wait for the change of frame size to occur */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8284 f->want_fullscreen |= FULLSCREEN_WAIT; |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8285 } |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8286 } |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8287 } |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8288 |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8289 /* If frame parameters are set after the frame is mapped, we need to move |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8290 the window. |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8291 Some window managers moves the window to the right position, some |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8292 moves the outer window manager window to the specified position. |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8293 Here we check that we are in the right spot. If not, make a second |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8294 move, assuming we are dealing with the second kind of window manager. */ |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8295 static void |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8296 x_check_expected_move (f) |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8297 struct frame *f; |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8298 { |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8299 if (FRAME_X_OUTPUT (f)->check_expected_move) |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8300 { |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8301 int expect_top = FRAME_X_OUTPUT (f)->expected_top; |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8302 int expect_left = FRAME_X_OUTPUT (f)->expected_left; |
|
52754
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52753
diff
changeset
|
8303 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8304 if (expect_top != f->top_pos || expect_left != f->left_pos) |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8305 { |
|
52754
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52753
diff
changeset
|
8306 FRAME_X_DISPLAY_INFO (f)->wm_type = X_WMTYPE_A; |
|
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52753
diff
changeset
|
8307 FRAME_X_OUTPUT (f)->move_offset_left = expect_left - f->left_pos; |
|
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52753
diff
changeset
|
8308 FRAME_X_OUTPUT (f)->move_offset_top = expect_top - f->top_pos; |
|
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52753
diff
changeset
|
8309 |
|
58891
75cac0943699
* xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
58403
diff
changeset
|
8310 f->left_pos = expect_left; |
|
75cac0943699
* xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
58403
diff
changeset
|
8311 f->top_pos = expect_top; |
|
75cac0943699
* xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
58403
diff
changeset
|
8312 x_set_offset (f, expect_left, expect_top, 0); |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8313 } |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8314 else if (FRAME_X_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN) |
|
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8315 FRAME_X_DISPLAY_INFO (f)->wm_type = X_WMTYPE_B; |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8316 |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8317 /* Just do this once */ |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
8318 FRAME_X_OUTPUT (f)->check_expected_move = 0; |
|
42717
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8319 } |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8320 } |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8321 |
|
839386cf6e9b
(x_check_fullscreen, x_check_fullscreen_move)
Eli Zaretskii <eliz@gnu.org>
parents:
42688
diff
changeset
|
8322 |
|
35487
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8323 /* Change the size of frame F's X window to COLS/ROWS in the case F |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8324 doesn't have a widget. If CHANGE_GRAVITY is 1, we change to |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8325 top-left-corner window gravity for this size change and subsequent |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8326 size changes. Otherwise we leave the window gravity unchanged. */ |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8327 |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8328 static void |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8329 x_set_window_size_1 (f, change_gravity, cols, rows) |
| 771 | 8330 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
|
8331 int change_gravity; |
|
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
8332 int cols, rows; |
| 286 | 8333 { |
| 8334 int pixelwidth, pixelheight; | |
|
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
|
8335 |
|
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
8336 check_frame_size (f, &rows, &cols); |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8337 f->scroll_bar_actual_width |
|
9167
8ad448b29c1c
(x_new_font): New rule for computing column width. Factored out common code.
Karl Heuer <kwzh@gnu.org>
parents:
9101
diff
changeset
|
8338 = (!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
|
8339 ? 0 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8340 : FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0 |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8341 ? FRAME_CONFIG_SCROLL_BAR_WIDTH (f) |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8342 : (FRAME_CONFIG_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f))); |
|
41721
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
8343 |
| 50097 | 8344 compute_fringe_widths (f, 0); |
|
41721
e0335ea68760
(zv_height, zv_bits, zv_period): Changed zv bitmap to
Kim F. Storm <storm@cua.dk>
parents:
41631
diff
changeset
|
8345 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8346 pixelwidth = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, cols); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8347 pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, rows); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8348 |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8349 f->win_gravity = NorthWestGravity; |
|
11915
e2ab839155e1
(XTflash): Use pointers as args to select.
Karl Heuer <kwzh@gnu.org>
parents:
11904
diff
changeset
|
8350 x_wm_set_size_hint (f, (long) 0, 0); |
|
8781
98741404d3e0
Delete X11 conditionals.
Richard M. Stallman <rms@gnu.org>
parents:
8724
diff
changeset
|
8351 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
8352 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
|
8353 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
|
8354 pixelwidth, pixelheight); |
|
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
8355 |
|
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
8356 /* 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
|
8357 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
|
8358 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
|
8359 ConfigureNotify event gets here. |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
8360 |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
8361 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
|
8362 and let the ConfigureNotify event set everything up, but that |
|
25150
1c02364724aa
(x_set_window_size): When calling change_frame_size, specify 1 for DELAY.
Richard M. Stallman <rms@gnu.org>
parents:
25101
diff
changeset
|
8363 might be kind of confusing to the Lisp code, since size changes |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
8364 wouldn't be reported in the frame parameters until some random |
|
25150
1c02364724aa
(x_set_window_size): When calling change_frame_size, specify 1 for DELAY.
Richard M. Stallman <rms@gnu.org>
parents:
25101
diff
changeset
|
8365 point in the future when the ConfigureNotify event arrives. |
|
1c02364724aa
(x_set_window_size): When calling change_frame_size, specify 1 for DELAY.
Richard M. Stallman <rms@gnu.org>
parents:
25101
diff
changeset
|
8366 |
|
1c02364724aa
(x_set_window_size): When calling change_frame_size, specify 1 for DELAY.
Richard M. Stallman <rms@gnu.org>
parents:
25101
diff
changeset
|
8367 We pass 1 for DELAY since we can't run Lisp code inside of |
|
1c02364724aa
(x_set_window_size): When calling change_frame_size, specify 1 for DELAY.
Richard M. Stallman <rms@gnu.org>
parents:
25101
diff
changeset
|
8368 a BLOCK_INPUT. */ |
|
25360
2f3ad0a21be5
Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents:
25328
diff
changeset
|
8369 change_frame_size (f, rows, cols, 0, 1, 0); |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8370 FRAME_PIXEL_WIDTH (f) = pixelwidth; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8371 FRAME_PIXEL_HEIGHT (f) = pixelheight; |
|
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
8372 |
|
14692
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
8373 /* 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
|
8374 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
|
8375 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
|
8376 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
|
8377 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
|
8378 |
|
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
8379 XFlush (FRAME_X_DISPLAY (f)); |
|
35487
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8380 } |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8381 |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8382 |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8383 /* Call this to change the size of frame F's x-window. |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8384 If CHANGE_GRAVITY is 1, we change to top-left-corner window gravity |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8385 for this size change and subsequent size changes. |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8386 Otherwise we leave the window gravity unchanged. */ |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8387 |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8388 void |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8389 x_set_window_size (f, change_gravity, cols, rows) |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8390 struct frame *f; |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8391 int change_gravity; |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8392 int cols, rows; |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8393 { |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8394 BLOCK_INPUT; |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8395 |
| 49322 | 8396 #ifdef USE_GTK |
| 8397 if (FRAME_GTK_WIDGET (f)) | |
| 8398 xg_frame_set_char_size (f, cols, rows); | |
| 8399 else | |
| 8400 x_set_window_size_1 (f, change_gravity, cols, rows); | |
| 8401 #elif USE_X_TOOLKIT | |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8402 |
|
36442
7fda58b1a204
(x_set_window_size): Don't use `None' with widgets; use
Gerd Moellmann <gerd@gnu.org>
parents:
36251
diff
changeset
|
8403 if (f->output_data.x->widget != NULL) |
|
35487
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8404 { |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8405 /* The x and y position of the widget is clobbered by the |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8406 call to XtSetValues within EmacsFrameSetCharSize. |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8407 This is a real kludge, but I don't understand Xt so I can't |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8408 figure out a correct fix. Can anyone else tell me? -- rms. */ |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8409 int xpos = f->output_data.x->widget->core.x; |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8410 int ypos = f->output_data.x->widget->core.y; |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8411 EmacsFrameSetCharSize (f->output_data.x->edit_widget, cols, rows); |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8412 f->output_data.x->widget->core.x = xpos; |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8413 f->output_data.x->widget->core.y = ypos; |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8414 } |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8415 else |
|
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8416 x_set_window_size_1 (f, change_gravity, cols, rows); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8417 |
|
35487
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8418 #else /* not USE_X_TOOLKIT */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8419 |
|
35487
e92d3f50f8b8
(x_set_window_size_1): New function extracted from
Gerd Moellmann <gerd@gnu.org>
parents:
35393
diff
changeset
|
8420 x_set_window_size_1 (f, change_gravity, cols, rows); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8421 |
|
14692
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
8422 #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
|
8423 |
|
7651
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
8424 /* If cursor was outside the new size, mark it as off. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8425 mark_window_cursors_off (XWINDOW (f->root_window)); |
|
7651
1569a13efdcd
(x_set_window_size): If cursor outside new size, mark it off.
Richard M. Stallman <rms@gnu.org>
parents:
7602
diff
changeset
|
8426 |
|
14692
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
8427 /* Clear out any recollection of where the mouse highlighting was, |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8428 since it might be in a place that's outside the new frame size. |
|
14692
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
8429 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
|
8430 so don't try--just let the highlighting be done afresh with new size. */ |
|
16491
7094452bc337
(cancel_mouse_face): New function. Code copied from
Richard M. Stallman <rms@gnu.org>
parents:
16483
diff
changeset
|
8431 cancel_mouse_face (f); |
|
14692
e93656946a8c
(x_set_window_size): Clear out the mouse-highlighting data
Richard M. Stallman <rms@gnu.org>
parents:
14557
diff
changeset
|
8432 |
| 286 | 8433 UNBLOCK_INPUT; |
| 8434 } | |
| 8435 | |
|
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
8436 /* Mouse warping. */ |
| 286 | 8437 |
|
7026
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
8438 void |
| 771 | 8439 x_set_mouse_position (f, x, y) |
| 8440 struct frame *f; | |
| 286 | 8441 int x, y; |
| 8442 { | |
| 8443 int pix_x, pix_y; | |
| 8444 | |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8445 pix_x = FRAME_COL_TO_PIXEL_X (f, x) + FRAME_COLUMN_WIDTH (f) / 2; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8446 pix_y = FRAME_LINE_TO_PIXEL_Y (f, y) + FRAME_LINE_HEIGHT (f) / 2; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
8447 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
8448 if (pix_x < 0) pix_x = 0; |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8449 if (pix_x > FRAME_PIXEL_WIDTH (f)) pix_x = FRAME_PIXEL_WIDTH (f); |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
8450 |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
8451 if (pix_y < 0) pix_y = 0; |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8452 if (pix_y > FRAME_PIXEL_HEIGHT (f)) pix_y = FRAME_PIXEL_HEIGHT (f); |
| 286 | 8453 |
| 8454 BLOCK_INPUT; | |
| 8455 | |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
8456 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
|
8457 0, 0, 0, 0, pix_x, pix_y); |
| 286 | 8458 UNBLOCK_INPUT; |
| 8459 } | |
| 8460 | |
|
7026
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
8461 /* 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
|
8462 |
|
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
8463 void |
|
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
8464 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
|
8465 struct frame *f; |
|
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
8466 int pix_x, pix_y; |
|
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
8467 { |
|
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
8468 BLOCK_INPUT; |
|
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
8469 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
8470 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
|
8471 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
|
8472 UNBLOCK_INPUT; |
|
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
8473 } |
|
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
8474 |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
8475 /* focus shifting, raising and lowering. */ |
|
7026
55f9a506180d
(x_set_mouse_pixel_position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
7001
diff
changeset
|
8476 |
| 21514 | 8477 void |
| 771 | 8478 x_focus_on_frame (f) |
| 8479 struct frame *f; | |
| 286 | 8480 { |
|
5156
fd78458b8c43
(XTread_socket): Really handle Xatom_wm_window_moved events.
Richard M. Stallman <rms@gnu.org>
parents:
5018
diff
changeset
|
8481 #if 0 /* This proves to be unpleasant. */ |
| 771 | 8482 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
|
8483 #endif |
| 369 | 8484 #if 0 |
| 8485 /* I don't think that the ICCCM allows programs to do things like this | |
| 8486 without the interaction of the window manager. Whatever you end up | |
| 771 | 8487 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
|
8488 XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), |
| 286 | 8489 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
|
8490 #endif /* ! 0 */ |
| 286 | 8491 } |
| 8492 | |
| 21514 | 8493 void |
| 771 | 8494 x_unfocus_frame (f) |
| 8495 struct frame *f; | |
| 286 | 8496 { |
| 369 | 8497 #if 0 |
| 771 | 8498 /* 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
|
8499 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
|
8500 XSetInputFocus (FRAME_X_DISPLAY (f), PointerRoot, |
| 286 | 8501 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
|
8502 #endif /* ! 0 */ |
| 286 | 8503 } |
| 8504 | |
| 771 | 8505 /* Raise frame F. */ |
| 8506 | |
| 21514 | 8507 void |
| 771 | 8508 x_raise_frame (f) |
| 8509 struct frame *f; | |
| 286 | 8510 { |
|
1658
452ba03935d7
* xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents:
1530
diff
changeset
|
8511 if (f->async_visible) |
| 286 | 8512 { |
| 8513 BLOCK_INPUT; | |
|
49644
834df49192b0
Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49600
diff
changeset
|
8514 XRaiseWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_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
|
8515 XFlush (FRAME_X_DISPLAY (f)); |
| 286 | 8516 UNBLOCK_INPUT; |
| 8517 } | |
| 8518 } | |
| 8519 | |
| 771 | 8520 /* Lower frame F. */ |
| 8521 | |
| 21514 | 8522 void |
| 771 | 8523 x_lower_frame (f) |
| 8524 struct frame *f; | |
| 286 | 8525 { |
|
1658
452ba03935d7
* xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents:
1530
diff
changeset
|
8526 if (f->async_visible) |
| 286 | 8527 { |
| 8528 BLOCK_INPUT; | |
|
49644
834df49192b0
Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49600
diff
changeset
|
8529 XLowerWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_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
|
8530 XFlush (FRAME_X_DISPLAY (f)); |
| 286 | 8531 UNBLOCK_INPUT; |
| 8532 } | |
| 8533 } | |
| 8534 | |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
8535 static void |
|
14411
bac274f178b0
(XTframe_raise_lower): Rename arg `raise' to `raise_flag'.
Richard M. Stallman <rms@gnu.org>
parents:
14305
diff
changeset
|
8536 XTframe_raise_lower (f, raise_flag) |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
8537 FRAME_PTR f; |
|
14411
bac274f178b0
(XTframe_raise_lower): Rename arg `raise' to `raise_flag'.
Richard M. Stallman <rms@gnu.org>
parents:
14305
diff
changeset
|
8538 int raise_flag; |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
8539 { |
|
14411
bac274f178b0
(XTframe_raise_lower): Rename arg `raise' to `raise_flag'.
Richard M. Stallman <rms@gnu.org>
parents:
14305
diff
changeset
|
8540 if (raise_flag) |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
8541 x_raise_frame (f); |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
8542 else |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
8543 x_lower_frame (f); |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
8544 } |
|
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
8545 |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
8546 /* Change of visibility. */ |
| 286 | 8547 |
|
12192
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
8548 /* 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
|
8549 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
|
8550 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
|
8551 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
|
8552 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
|
8553 finishes with it. */ |
|
1b571a7992b0
(x_make_frame_visible): Test and set asked_for_visible.
Karl Heuer <kwzh@gnu.org>
parents:
12189
diff
changeset
|
8554 |
| 21514 | 8555 void |
| 771 | 8556 x_make_frame_visible (f) |
| 8557 struct frame *f; | |
| 286 | 8558 { |
|
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
8559 Lisp_Object type; |
|
17963
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8560 int original_top, original_left; |
|
31948
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8561 int retry_count = 2; |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8562 |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8563 retry: |
| 286 | 8564 |
| 429 | 8565 BLOCK_INPUT; |
| 8566 | |
|
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
8567 type = x_icon_type (f); |
|
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
8568 if (!NILP (type)) |
|
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
8569 x_bitmap_icon (f, type); |
|
9446
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
8570 |
| 771 | 8571 if (! FRAME_VISIBLE_P (f)) |
| 286 | 8572 { |
|
17963
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8573 /* We test FRAME_GARBAGED_P here to make sure we don't |
|
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8574 call x_set_offset a second time |
|
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8575 if we get to x_make_frame_visible a second time |
|
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8576 before the window gets really visible. */ |
|
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8577 if (! FRAME_ICONIFIED_P (f) |
|
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8578 && ! f->output_data.x->asked_for_visible) |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8579 x_set_offset (f, f->left_pos, f->top_pos, 0); |
|
17963
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8580 |
|
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8581 f->output_data.x->asked_for_visible = 1; |
|
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8582 |
| 429 | 8583 if (! EQ (Vx_no_window_manager, Qt)) |
| 771 | 8584 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
|
8585 #ifdef USE_X_TOOLKIT |
|
7167
2fa74c48e4e5
(x_make_frame_visible): Use XtMapWidget, not XtPopup.
Richard M. Stallman <rms@gnu.org>
parents:
7128
diff
changeset
|
8586 /* 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
|
8587 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
|
8588 #else /* not USE_X_TOOLKIT */ |
| 49322 | 8589 #ifdef USE_GTK |
| 8590 gtk_widget_show_all (FRAME_GTK_OUTER_WIDGET (f)); | |
|
49651
05ebf4266798
xterm.c (x_make_frame_visible): Call gtk_window_deiconify.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49644
diff
changeset
|
8591 gtk_window_deiconify (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f))); |
| 49322 | 8592 #else |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
8593 XMapRaised (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f)); |
| 49322 | 8594 #endif /* not USE_GTK */ |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
8595 #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
|
8596 #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
|
8597 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
|
8598 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
|
8599 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
|
8600 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
|
8601 #endif |
| 429 | 8602 } |
| 286 | 8603 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
8604 XFlush (FRAME_X_DISPLAY (f)); |
| 429 | 8605 |
|
7959
224440646fa7
(make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents:
7935
diff
changeset
|
8606 /* 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
|
8607 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
|
8608 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
|
8609 { |
|
224440646fa7
(make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents:
7935
diff
changeset
|
8610 Lisp_Object frame; |
|
27040
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8611 int count; |
|
18528
73f4d9258f04
(x_make_frame_visible): Check has_been_visible
Richard M. Stallman <rms@gnu.org>
parents:
18347
diff
changeset
|
8612 /* This must be before UNBLOCK_INPUT |
|
73f4d9258f04
(x_make_frame_visible): Check has_been_visible
Richard M. Stallman <rms@gnu.org>
parents:
18347
diff
changeset
|
8613 since events that arrive in response to the actions above |
|
73f4d9258f04
(x_make_frame_visible): Check has_been_visible
Richard M. Stallman <rms@gnu.org>
parents:
18347
diff
changeset
|
8614 will set it when they are handled. */ |
|
73f4d9258f04
(x_make_frame_visible): Check has_been_visible
Richard M. Stallman <rms@gnu.org>
parents:
18347
diff
changeset
|
8615 int previously_visible = f->output_data.x->has_been_visible; |
|
17963
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8616 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8617 original_left = f->left_pos; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8618 original_top = f->top_pos; |
|
9337
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
8619 |
|
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
8620 /* This must come after we set COUNT. */ |
|
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
8621 UNBLOCK_INPUT; |
|
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
8622 |
|
22907
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8623 /* We unblock here so that arriving X events are processed. */ |
|
17963
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8624 |
|
18008
d25d2472df51
(XTread_socket) <ConfigureNotify>: Don't call
Richard M. Stallman <rms@gnu.org>
parents:
17963
diff
changeset
|
8625 /* Now move the window back to where it was "supposed to be". |
|
d25d2472df51
(XTread_socket) <ConfigureNotify>: Don't call
Richard M. Stallman <rms@gnu.org>
parents:
17963
diff
changeset
|
8626 But don't do it if the gravity is negative. |
|
d25d2472df51
(XTread_socket) <ConfigureNotify>: Don't call
Richard M. Stallman <rms@gnu.org>
parents:
17963
diff
changeset
|
8627 When the gravity is negative, this uses a position |
|
18528
73f4d9258f04
(x_make_frame_visible): Check has_been_visible
Richard M. Stallman <rms@gnu.org>
parents:
18347
diff
changeset
|
8628 that is 3 pixels too low. Perhaps that's really the border width. |
|
73f4d9258f04
(x_make_frame_visible): Check has_been_visible
Richard M. Stallman <rms@gnu.org>
parents:
18347
diff
changeset
|
8629 |
|
73f4d9258f04
(x_make_frame_visible): Check has_been_visible
Richard M. Stallman <rms@gnu.org>
parents:
18347
diff
changeset
|
8630 Don't do this if the window has never been visible before, |
|
73f4d9258f04
(x_make_frame_visible): Check has_been_visible
Richard M. Stallman <rms@gnu.org>
parents:
18347
diff
changeset
|
8631 because the window manager may choose the position |
|
73f4d9258f04
(x_make_frame_visible): Check has_been_visible
Richard M. Stallman <rms@gnu.org>
parents:
18347
diff
changeset
|
8632 and we don't want to override it. */ |
|
18008
d25d2472df51
(XTread_socket) <ConfigureNotify>: Don't call
Richard M. Stallman <rms@gnu.org>
parents:
17963
diff
changeset
|
8633 |
|
18630
3e414b9da546
(x_make_frame_visible): Don't move the frame
Richard M. Stallman <rms@gnu.org>
parents:
18528
diff
changeset
|
8634 if (! FRAME_VISIBLE_P (f) && ! FRAME_ICONIFIED_P (f) |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8635 && f->win_gravity == NorthWestGravity |
|
18528
73f4d9258f04
(x_make_frame_visible): Check has_been_visible
Richard M. Stallman <rms@gnu.org>
parents:
18347
diff
changeset
|
8636 && previously_visible) |
|
17963
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8637 { |
|
22907
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8638 Drawable rootw; |
|
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8639 int x, y; |
|
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8640 unsigned int width, height, border, depth; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8641 |
|
17963
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8642 BLOCK_INPUT; |
|
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8643 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8644 /* On some window managers (such as FVWM) moving an existing |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8645 window, even to the same place, causes the window manager |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8646 to introduce an offset. This can cause the window to move |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8647 to an unexpected location. Check the geometry (a little |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8648 slow here) and then verify that the window is in the right |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8649 place. If the window is not in the right place, move it |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8650 there, and take the potential window manager hit. */ |
|
22907
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8651 XGetGeometry (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), |
|
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8652 &rootw, &x, &y, &width, &height, &border, &depth); |
|
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8653 |
|
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8654 if (original_left != x || original_top != y) |
|
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8655 XMoveWindow (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), |
|
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8656 original_left, original_top); |
|
43e290c6fb19
(x_list_fonts): Call XFreeFont after the new call to XLoadQueryFont.
Richard M. Stallman <rms@gnu.org>
parents:
22773
diff
changeset
|
8657 |
|
17963
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8658 UNBLOCK_INPUT; |
|
b77c13e71ba3
(XTread_socket) <UnmapNotify>: Don't make an inconify_event
Richard M. Stallman <rms@gnu.org>
parents:
17953
diff
changeset
|
8659 } |
|
17953
96a51be54a7e
(x_make_frame_visible): Call x_set_offset only after
Richard M. Stallman <rms@gnu.org>
parents:
17877
diff
changeset
|
8660 |
|
9338
873508897cc2
(x_new_focus_frame, construct_mouse_click, construct_menu_click,
Karl Heuer <kwzh@gnu.org>
parents:
9337
diff
changeset
|
8661 XSETFRAME (frame, f); |
|
9337
7b933936a676
(input_signal_count): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
9232
diff
changeset
|
8662 |
|
27040
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8663 /* Wait until the frame is visible. Process X events until a |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8664 MapNotify event has been seen, or until we think we won't get a |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8665 MapNotify at all.. */ |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8666 for (count = input_signal_count + 10; |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8667 input_signal_count < count && !FRAME_VISIBLE_P (f);) |
|
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
|
8668 { |
|
27040
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8669 /* Force processing of queued events. */ |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
8670 x_sync (f); |
|
27040
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8671 |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8672 /* Machines that do polling rather than SIGIO have been |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8673 observed to go into a busy-wait here. So we'll fake an |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8674 alarm signal to let the handler know that there's something |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8675 to be read. We used to raise a real alarm, but it seems |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8676 that the handler isn't always enabled here. This is |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8677 probably a bug. */ |
|
8682
42f95b1368ea
(x_make_frame_visible): Call input_polling_used.
Richard M. Stallman <rms@gnu.org>
parents:
8652
diff
changeset
|
8678 if (input_polling_used ()) |
| 8652 | 8679 { |
|
27040
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8680 /* It could be confusing if a real alarm arrives while |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8681 processing the fake one. Turn it off and let the |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8682 handler reset it. */ |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8683 extern void poll_for_input_1 P_ ((void)); |
|
27428
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
8684 int old_poll_suppress_count = poll_suppress_count; |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
8685 poll_suppress_count = 1; |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
8686 poll_for_input_1 (); |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
8687 poll_suppress_count = old_poll_suppress_count; |
| 8652 | 8688 } |
|
27040
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8689 |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8690 /* See if a MapNotify event has been processed. */ |
|
900a02429efa
(x_make_frame_visible): Wait for frame becoming visible
Gerd Moellmann <gerd@gnu.org>
parents:
27000
diff
changeset
|
8691 FRAME_SAMPLE_VISIBILITY (f); |
|
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
|
8692 } |
|
31948
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8693 |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8694 /* 2000-09-28: In |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8695 |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8696 (let ((f (selected-frame))) |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8697 (iconify-frame f) |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8698 (raise-frame f)) |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8699 |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8700 the frame is not raised with various window managers on |
| 51093 | 8701 FreeBSD, GNU/Linux and Solaris. It turns out that, for some |
|
31948
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8702 unknown reason, the call to XtMapWidget is completely ignored. |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8703 Mapping the widget a second time works. */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
8704 |
|
31948
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8705 if (!FRAME_VISIBLE_P (f) && --retry_count > 0) |
|
a6e9ef37895d
(x_make_frame_visible): Try harder to make the frame
Gerd Moellmann <gerd@gnu.org>
parents:
31864
diff
changeset
|
8706 goto retry; |
|
7959
224440646fa7
(make_frame_visible): At end, wait till Emacs sees frame is visible.
Richard M. Stallman <rms@gnu.org>
parents:
7935
diff
changeset
|
8707 } |
| 286 | 8708 } |
| 8709 | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8710 /* Change from mapped state to withdrawn state. */ |
| 286 | 8711 |
|
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
8712 /* Make the frame visible (mapped and not iconified). */ |
|
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
8713 |
| 21514 | 8714 void |
| 771 | 8715 x_make_frame_invisible (f) |
| 8716 struct frame *f; | |
| 286 | 8717 { |
|
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
8718 Window window; |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
8719 |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
8720 /* Use the frame's outermost window, not the one we normally draw on. */ |
|
49644
834df49192b0
Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49600
diff
changeset
|
8721 window = FRAME_OUTER_WINDOW (f); |
| 286 | 8722 |
|
3284
a47979ffad1e
(XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents:
3282
diff
changeset
|
8723 /* 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
|
8724 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
|
8725 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
|
8726 |
|
6983
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
8727 #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
|
8728 if (! f->async_visible && ! f->async_iconified) |
| 286 | 8729 return; |
|
6983
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
8730 #endif |
| 286 | 8731 |
| 8732 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
|
8733 |
|
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
8734 /* 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
|
8735 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
|
8736 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
|
8737 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
|
8738 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
|
8739 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
|
8740 |
| 49322 | 8741 #ifdef USE_GTK |
| 8742 if (FRAME_GTK_OUTER_WIDGET (f)) | |
|
50324
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
8743 gtk_widget_hide (FRAME_GTK_OUTER_WIDGET (f)); |
|
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
8744 else |
|
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
8745 #endif |
|
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
8746 { |
|
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
8747 #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
|
8748 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
8749 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
|
8750 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
|
8751 { |
|
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
8752 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
|
8753 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
|
8754 } |
|
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
8755 #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
|
8756 |
|
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
8757 /* Tell the window manager what we're going to do. */ |
| 286 | 8758 if (! EQ (Vx_no_window_manager, Qt)) |
| 8759 { | |
|
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8760 XEvent unmap; |
|
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8761 |
|
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8762 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
|
8763 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
|
8764 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
|
8765 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
|
8766 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
|
8767 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
|
8768 False, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8769 SubstructureRedirectMaskSubstructureNotifyMask, |
|
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8770 &unmap)) |
|
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8771 { |
|
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8772 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
|
8773 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
|
8774 } |
| 286 | 8775 } |
| 8776 | |
|
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8777 /* 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
|
8778 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
|
8779 #endif /* ! defined (HAVE_X11R4) */ |
|
50324
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
8780 } |
|
d9a401f2769d
(take_vertical_position_into_account): Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50270
diff
changeset
|
8781 |
|
6983
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
8782 /* 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
|
8783 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
|
8784 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
|
8785 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
|
8786 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
|
8787 f->visible = 0; |
|
b18e5c09d7c3
(XTread_socket, case ClientMessage): Use x_window_to_frame unconditionally.
Richard M. Stallman <rms@gnu.org>
parents:
6941
diff
changeset
|
8788 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
|
8789 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
|
8790 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
|
8791 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
8792 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
|
8793 |
| 286 | 8794 UNBLOCK_INPUT; |
| 8795 } | |
| 8796 | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8797 /* Change window state from mapped to iconified. */ |
| 286 | 8798 |
| 21514 | 8799 void |
| 771 | 8800 x_iconify_frame (f) |
| 8801 struct frame *f; | |
| 286 | 8802 { |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
8803 int result; |
|
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
8804 Lisp_Object type; |
| 286 | 8805 |
|
3284
a47979ffad1e
(XTread_socket): For UnmapNotify, if frame was visible,
Richard M. Stallman <rms@gnu.org>
parents:
3282
diff
changeset
|
8806 /* 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
|
8807 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
|
8808 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
|
8809 |
|
1658
452ba03935d7
* xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents:
1530
diff
changeset
|
8810 if (f->async_iconified) |
| 286 | 8811 return; |
| 8812 | |
|
9446
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
8813 BLOCK_INPUT; |
|
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
8814 |
|
13627
8873aa3451dd
(XTmouse_position): Exit the loop if child == win.
Richard M. Stallman <rms@gnu.org>
parents:
13598
diff
changeset
|
8815 FRAME_SAMPLE_VISIBILITY (f); |
|
8873aa3451dd
(XTmouse_position): Exit the loop if child == win.
Richard M. Stallman <rms@gnu.org>
parents:
13598
diff
changeset
|
8816 |
|
9565
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
8817 type = x_icon_type (f); |
|
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
8818 if (!NILP (type)) |
|
255d98c7cd67
(dumpglyphs): Explicitly draw background stipple.
Richard M. Stallman <rms@gnu.org>
parents:
9542
diff
changeset
|
8819 x_bitmap_icon (f, type); |
|
9446
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
8820 |
| 49322 | 8821 #ifdef USE_GTK |
| 8822 if (FRAME_GTK_OUTER_WIDGET (f)) | |
| 8823 { | |
| 8824 if (! FRAME_VISIBLE_P (f)) | |
| 8825 gtk_widget_show_all (FRAME_GTK_OUTER_WIDGET (f)); | |
| 8826 | |
| 8827 gtk_window_iconify (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f))); | |
| 8828 f->iconified = 1; | |
| 8829 f->visible = 1; | |
| 8830 f->async_iconified = 1; | |
| 8831 f->async_visible = 0; | |
| 8832 UNBLOCK_INPUT; | |
| 8833 return; | |
| 8834 } | |
| 8835 #endif | |
| 8836 | |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
8837 #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
|
8838 |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
8839 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
|
8840 { |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
8841 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
|
8842 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
|
8843 /* 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
|
8844 XtMapWidget (f->output_data.x->widget); |
|
15472
300b52e37681
(x_iconify_frame): If frame is invisible, explicitly mark it as iconified.
Richard M. Stallman <rms@gnu.org>
parents:
15376
diff
changeset
|
8845 /* The server won't give us any event to indicate |
|
300b52e37681
(x_iconify_frame): If frame is invisible, explicitly mark it as iconified.
Richard M. Stallman <rms@gnu.org>
parents:
15376
diff
changeset
|
8846 that an invisible frame was changed to an icon, |
|
300b52e37681
(x_iconify_frame): If frame is invisible, explicitly mark it as iconified.
Richard M. Stallman <rms@gnu.org>
parents:
15376
diff
changeset
|
8847 so we have to record it here. */ |
|
300b52e37681
(x_iconify_frame): If frame is invisible, explicitly mark it as iconified.
Richard M. Stallman <rms@gnu.org>
parents:
15376
diff
changeset
|
8848 f->iconified = 1; |
|
16753
ab63a77c3a23
(x_iconify_frame): Clear visible when we set iconified.
Richard M. Stallman <rms@gnu.org>
parents:
16491
diff
changeset
|
8849 f->visible = 1; |
|
15472
300b52e37681
(x_iconify_frame): If frame is invisible, explicitly mark it as iconified.
Richard M. Stallman <rms@gnu.org>
parents:
15376
diff
changeset
|
8850 f->async_iconified = 1; |
|
16753
ab63a77c3a23
(x_iconify_frame): Clear visible when we set iconified.
Richard M. Stallman <rms@gnu.org>
parents:
16491
diff
changeset
|
8851 f->async_visible = 0; |
|
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
8852 UNBLOCK_INPUT; |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
8853 return; |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
8854 } |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
8855 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
8856 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
|
8857 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
|
8858 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
|
8859 UNBLOCK_INPUT; |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
8860 |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
8861 if (!result) |
|
7602
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
8862 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
|
8863 |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
8864 f->async_iconified = 1; |
|
16753
ab63a77c3a23
(x_iconify_frame): Clear visible when we set iconified.
Richard M. Stallman <rms@gnu.org>
parents:
16491
diff
changeset
|
8865 f->async_visible = 0; |
|
ab63a77c3a23
(x_iconify_frame): Clear visible when we set iconified.
Richard M. Stallman <rms@gnu.org>
parents:
16491
diff
changeset
|
8866 |
|
5740
48da4ed089e9
(x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents:
5737
diff
changeset
|
8867 |
|
48da4ed089e9
(x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents:
5737
diff
changeset
|
8868 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
|
8869 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
|
8870 UNBLOCK_INPUT; |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
8871 #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
|
8872 |
|
7738
a810335742bb
(x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents:
7706
diff
changeset
|
8873 /* 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
|
8874 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
|
8875 if (! FRAME_VISIBLE_P (f) && !FRAME_ICONIFIED_P (f)) |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
8876 x_set_offset (f, f->left_pos, f->top_pos, 0); |
|
7738
a810335742bb
(x_iconify_frame): Call x_set_offset,
Richard M. Stallman <rms@gnu.org>
parents:
7706
diff
changeset
|
8877 |
|
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8878 /* 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
|
8879 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
|
8880 |
|
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8881 /* 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
|
8882 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
|
8883 { |
|
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8884 XEvent message; |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
8885 |
|
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
8886 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
|
8887 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
|
8888 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
|
8889 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
|
8890 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
|
8891 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
8892 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
|
8893 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
|
8894 False, |
|
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8895 SubstructureRedirectMask | SubstructureNotifyMask, |
|
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8896 &message)) |
| 286 | 8897 { |
| 8898 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
|
8899 error ("Can't notify window manager of iconification"); |
| 286 | 8900 } |
|
1020
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8901 } |
|
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8902 |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
8903 /* 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
|
8904 IconicState. */ |
|
7c2565dd644c
* xterm.c (x_wm_hints): Variable deleted. This has to be
Jim Blandy <jimb@redhat.com>
parents:
976
diff
changeset
|
8905 x_wm_set_window_state (f, IconicState); |
| 286 | 8906 |
|
4304
b5014da888a8
(x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents:
4277
diff
changeset
|
8907 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
|
8908 { |
|
b5014da888a8
(x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents:
4277
diff
changeset
|
8909 /* 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
|
8910 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
|
8911 } |
|
b5014da888a8
(x_iconify_frame): Handle case where frame was invisible.
Richard M. Stallman <rms@gnu.org>
parents:
4277
diff
changeset
|
8912 |
|
1658
452ba03935d7
* xterm.c (XTread_socket): When we get MapNotify, UnmapNotify,
Jim Blandy <jimb@redhat.com>
parents:
1530
diff
changeset
|
8913 f->async_iconified = 1; |
|
16753
ab63a77c3a23
(x_iconify_frame): Clear visible when we set iconified.
Richard M. Stallman <rms@gnu.org>
parents:
16491
diff
changeset
|
8914 f->async_visible = 0; |
| 286 | 8915 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
8916 XFlush (FRAME_X_DISPLAY (f)); |
| 286 | 8917 UNBLOCK_INPUT; |
|
5740
48da4ed089e9
(x_iconify_frame): Fix misbalanced BLOCK_INPUT/UNBLOCK_INPUT.
Karl Heuer <kwzh@gnu.org>
parents:
5737
diff
changeset
|
8918 #endif /* not USE_X_TOOLKIT */ |
| 286 | 8919 } |
|
34526
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
8920 |
|
12172
58ce63f11008
(x_get_keysym_name): New function.
Karl Heuer <kwzh@gnu.org>
parents:
12079
diff
changeset
|
8921 |
|
34526
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
8922 /* Free X resources of frame F. */ |
|
1810
bf618128d973
* xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents:
1803
diff
changeset
|
8923 |
| 21514 | 8924 void |
|
34526
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
8925 x_free_frame_resources (f) |
| 771 | 8926 struct frame *f; |
| 286 | 8927 { |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
8928 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
|
41837
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8929 Lisp_Object bar; |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8930 struct scroll_bar *b; |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
8931 |
| 286 | 8932 BLOCK_INPUT; |
|
1810
bf618128d973
* xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents:
1803
diff
changeset
|
8933 |
|
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
8934 /* 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
|
8935 commands to the X server. */ |
|
34526
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
8936 if (dpyinfo->display) |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
8937 { |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
8938 if (f->output_data.x->icon_desc) |
|
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
8939 XDestroyWindow (FRAME_X_DISPLAY (f), f->output_data.x->icon_desc); |
|
41837
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8940 |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8941 #ifdef USE_X_TOOLKIT |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8942 /* Explicitly destroy the scroll bars of the frame. Without |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8943 this, we get "BadDrawable" errors from the toolkit later on, |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8944 presumably from expose events generated for the disappearing |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8945 toolkit scroll bars. */ |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8946 for (bar = FRAME_SCROLL_BARS (f); !NILP (bar); bar = b->next) |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8947 { |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8948 b = XSCROLL_BAR (bar); |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8949 x_scroll_bar_remove (b); |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8950 } |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8951 #endif |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8952 |
|
14830
34db919835d3
(x_destroy_window) [HAVE_X_I18N]: Free xic and xim of frame.
Richard M. Stallman <rms@gnu.org>
parents:
14826
diff
changeset
|
8953 #ifdef HAVE_X_I18N |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8954 if (FRAME_XIC (f)) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
8955 free_frame_xic (f); |
|
14830
34db919835d3
(x_destroy_window) [HAVE_X_I18N]: Free xic and xim of frame.
Richard M. Stallman <rms@gnu.org>
parents:
14826
diff
changeset
|
8956 #endif |
|
41837
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8957 |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
8958 #ifdef USE_X_TOOLKIT |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
8959 if (f->output_data.x->widget) |
|
37212
5c27e50f91d1
(x_free_frame_resources) [USE_X_TOOLKIT]: Set
Gerd Moellmann <gerd@gnu.org>
parents:
37153
diff
changeset
|
8960 { |
|
5c27e50f91d1
(x_free_frame_resources) [USE_X_TOOLKIT]: Set
Gerd Moellmann <gerd@gnu.org>
parents:
37153
diff
changeset
|
8961 XtDestroyWidget (f->output_data.x->widget); |
|
5c27e50f91d1
(x_free_frame_resources) [USE_X_TOOLKIT]: Set
Gerd Moellmann <gerd@gnu.org>
parents:
37153
diff
changeset
|
8962 f->output_data.x->widget = NULL; |
|
5c27e50f91d1
(x_free_frame_resources) [USE_X_TOOLKIT]: Set
Gerd Moellmann <gerd@gnu.org>
parents:
37153
diff
changeset
|
8963 } |
|
41837
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8964 /* Tooltips don't have widgets, only a simple X window, even if |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8965 we are using a toolkit. */ |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8966 else if (FRAME_X_WINDOW (f)) |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8967 XDestroyWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f)); |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8968 |
|
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
8969 free_frame_menubar (f); |
|
41837
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8970 #else /* !USE_X_TOOLKIT */ |
| 49322 | 8971 |
| 8972 #ifdef USE_GTK | |
| 8973 /* In the GTK version, tooltips are normal X | |
| 8974 frames. We must check and free both types. */ | |
| 8975 if (FRAME_GTK_OUTER_WIDGET (f)) | |
| 8976 { | |
| 8977 gtk_widget_destroy (FRAME_GTK_OUTER_WIDGET (f)); | |
| 8978 FRAME_X_WINDOW (f) = 0; /* Set to avoid XDestroyWindow below */ | |
| 8979 FRAME_GTK_OUTER_WIDGET (f) = 0; | |
| 8980 } | |
| 8981 #endif /* USE_GTK */ | |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
8982 |
|
41837
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8983 if (FRAME_X_WINDOW (f)) |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8984 XDestroyWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f)); |
|
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8985 #endif /* !USE_X_TOOLKIT */ |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
8986 |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8987 unload_color (f, f->output_data.x->foreground_pixel); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8988 unload_color (f, f->output_data.x->background_pixel); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8989 unload_color (f, f->output_data.x->cursor_pixel); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8990 unload_color (f, f->output_data.x->cursor_foreground_pixel); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8991 unload_color (f, f->output_data.x->border_pixel); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8992 unload_color (f, f->output_data.x->mouse_pixel); |
|
41837
ca8e9acfffca
(x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the
Eli Zaretskii <eliz@gnu.org>
parents:
41791
diff
changeset
|
8993 |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8994 if (f->output_data.x->scroll_bar_background_pixel != -1) |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8995 unload_color (f, f->output_data.x->scroll_bar_background_pixel); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8996 if (f->output_data.x->scroll_bar_foreground_pixel != -1) |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
8997 unload_color (f, f->output_data.x->scroll_bar_foreground_pixel); |
|
39618
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
8998 #ifdef USE_TOOLKIT_SCROLL_BARS |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
8999 /* Scrollbar shadow colors. */ |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
9000 if (f->output_data.x->scroll_bar_top_shadow_pixel != -1) |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
9001 unload_color (f, f->output_data.x->scroll_bar_top_shadow_pixel); |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
9002 if (f->output_data.x->scroll_bar_bottom_shadow_pixel != -1) |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
9003 unload_color (f, f->output_data.x->scroll_bar_bottom_shadow_pixel); |
|
6d60a3a33839
(x_create_toolkit_scroll_bar): Try to allocate colors for the shadows,
Miles Bader <miles@gnu.org>
parents:
39586
diff
changeset
|
9004 #endif /* USE_TOOLKIT_SCROLL_BARS */ |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
9005 if (f->output_data.x->white_relief.allocated_p) |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
9006 unload_color (f, f->output_data.x->white_relief.pixel); |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
9007 if (f->output_data.x->black_relief.allocated_p) |
|
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
9008 unload_color (f, f->output_data.x->black_relief.pixel); |
|
34318
d302f6935ff8
(x_destroy_window): Call x_free_gcs so that
Gerd Moellmann <gerd@gnu.org>
parents:
34250
diff
changeset
|
9009 |
|
34526
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9010 if (FRAME_FACE_CACHE (f)) |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9011 free_frame_faces (f); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9012 |
|
34318
d302f6935ff8
(x_destroy_window): Call x_free_gcs so that
Gerd Moellmann <gerd@gnu.org>
parents:
34250
diff
changeset
|
9013 x_free_gcs (f); |
|
14489
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
9014 XFlush (FRAME_X_DISPLAY (f)); |
|
9bc700f13f97
(x_connection_signal): Call x_connection_closed properly.
Richard M. Stallman <rms@gnu.org>
parents:
14411
diff
changeset
|
9015 } |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
9016 |
| 17575 | 9017 if (f->output_data.x->saved_menu_event) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9018 xfree (f->output_data.x->saved_menu_event); |
|
17574
7fe6de4949e4
(x_destroy_window): Free saved_menu_event, if any.
Richard M. Stallman <rms@gnu.org>
parents:
17519
diff
changeset
|
9019 |
|
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
9020 xfree (f->output_data.x); |
|
34526
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9021 f->output_data.x = NULL; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9022 |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
9023 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
|
9024 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
|
9025 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
|
9026 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
|
9027 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
|
9028 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
|
9029 |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
9030 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
|
9031 { |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
9032 dpyinfo->mouse_face_beg_row |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
9033 = dpyinfo->mouse_face_beg_col = -1; |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
9034 dpyinfo->mouse_face_end_row |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
9035 = dpyinfo->mouse_face_end_col = -1; |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
9036 dpyinfo->mouse_face_window = Qnil; |
|
21017
1ecfba12016a
(XTframe_up_to_date): Check that mouse_face_mouse_frame
Richard M. Stallman <rms@gnu.org>
parents:
20632
diff
changeset
|
9037 dpyinfo->mouse_face_deferred_gc = 0; |
|
1ecfba12016a
(XTframe_up_to_date): Check that mouse_face_mouse_frame
Richard M. Stallman <rms@gnu.org>
parents:
20632
diff
changeset
|
9038 dpyinfo->mouse_face_mouse_frame = 0; |
|
6934
e0ab4f59004e
(dumpglyphs): When HL=2, check explicitly for using
Richard M. Stallman <rms@gnu.org>
parents:
6883
diff
changeset
|
9039 } |
|
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
9040 |
|
1810
bf618128d973
* xterm.c (x_scrollbar_create): Set the scrollbars to use
Jim Blandy <jimb@redhat.com>
parents:
1803
diff
changeset
|
9041 UNBLOCK_INPUT; |
| 286 | 9042 } |
|
34526
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9043 |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9044 |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9045 /* Destroy the X window of frame F. */ |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9046 |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9047 void |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9048 x_destroy_window (f) |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9049 struct frame *f; |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9050 { |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9051 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9052 |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9053 /* If a display connection is dead, don't try sending more |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9054 commands to the X server. */ |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9055 if (dpyinfo->display != 0) |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9056 x_free_frame_resources (f); |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9057 |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9058 dpyinfo->reference_count--; |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9059 } |
|
0da25e792d3e
(x_free_frame_resources): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
34511
diff
changeset
|
9060 |
| 286 | 9061 |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
9062 /* Setting window manager hints. */ |
|
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
9063 |
|
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9064 /* 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
|
9065 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
|
9066 that the window now has. |
|
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9067 If USER_POSITION is nonzero, we set the USPosition |
| 49322 | 9068 flag (this is useful when FLAGS is 0). |
| 9069 The GTK version is in gtkutils.c */ | |
| 9070 | |
| 9071 #ifndef USE_GTK | |
| 21514 | 9072 void |
|
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9073 x_wm_set_size_hint (f, flags, user_position) |
| 771 | 9074 struct frame *f; |
|
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9075 long flags; |
|
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9076 int user_position; |
| 286 | 9077 { |
| 9078 XSizeHints size_hints; | |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
9079 |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
9080 #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
|
9081 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
|
9082 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
|
9083 Dimension widget_width, widget_height; |
| 49322 | 9084 #endif |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
9085 |
| 49322 | 9086 Window window = FRAME_OUTER_WINDOW (f); |
| 286 | 9087 |
|
7187
ca0102511d80
(x_wm_set_size_hint): Don't set PMaxSize.
Richard M. Stallman <rms@gnu.org>
parents:
7169
diff
changeset
|
9088 /* 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
|
9089 size_hints.flags = PResizeInc | PMinSize /* | PMaxSize */; |
| 286 | 9090 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9091 size_hints.x = f->left_pos; |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9092 size_hints.y = f->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
|
9093 |
|
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
|
9094 #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
|
9095 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
|
9096 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
|
9097 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
|
9098 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
|
9099 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
|
9100 #else /* not USE_X_TOOLKIT */ |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9101 size_hints.height = FRAME_PIXEL_HEIGHT (f); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9102 size_hints.width = FRAME_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
|
9103 #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
|
9104 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9105 size_hints.width_inc = FRAME_COLUMN_WIDTH (f); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9106 size_hints.height_inc = FRAME_LINE_HEIGHT (f); |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
9107 size_hints.max_width |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9108 = FRAME_X_DISPLAY_INFO (f)->width - FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, 0); |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
9109 size_hints.max_height |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9110 = FRAME_X_DISPLAY_INFO (f)->height - FRAME_TEXT_LINES_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
|
9111 |
| 12189 | 9112 /* Calculate the base and minimum sizes. |
| 9113 | |
| 9114 (When we use the X toolkit, we don't do it here. | |
| 9115 Instead we copy the values that the widgets are using, below.) */ | |
| 9116 #ifndef USE_X_TOOLKIT | |
|
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
9117 { |
|
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
|
9118 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
|
9119 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
|
9120 |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9121 base_width = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, 0); |
|
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9122 base_height = FRAME_TEXT_LINES_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
|
9123 |
|
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
9124 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
|
9125 |
|
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
9126 /* 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
|
9127 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
|
9128 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
|
9129 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
|
9130 zero-row, zero-column frame. |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
9131 |
|
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
9132 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
|
9133 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
|
9134 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
|
9135 |
|
cd3d59155bf7
* xterm.c (x_wm_set_size_hint): Set the base_width and base_height
Jim Blandy <jimb@redhat.com>
parents:
1077
diff
changeset
|
9136 #ifdef HAVE_X11R4 |
|
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
9137 size_hints.flags |= PBaseSize; |
|
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
9138 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
|
9139 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
|
9140 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
|
9141 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
|
9142 #else |
|
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
9143 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
|
9144 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
|
9145 #endif |
|
976
cbdfc337ec8f
* xterm.c (x_wm_hints): New variable.
Jim Blandy <jimb@redhat.com>
parents:
786
diff
changeset
|
9146 } |
| 286 | 9147 |
| 12189 | 9148 /* 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
|
9149 if (flags) |
| 286 | 9150 { |
| 12189 | 9151 size_hints.flags |= flags; |
| 9152 goto no_read; | |
| 9153 } | |
| 9154 #endif /* not USE_X_TOOLKIT */ | |
| 9155 | |
| 9156 { | |
| 9157 XSizeHints hints; /* Sometimes I hate X Windows... */ | |
| 9158 long supplied_return; | |
| 9159 int value; | |
|
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9160 |
|
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9161 #ifdef HAVE_X11R4 |
| 12189 | 9162 value = XGetWMNormalHints (FRAME_X_DISPLAY (f), window, &hints, |
| 9163 &supplied_return); | |
|
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9164 #else |
| 12189 | 9165 value = XGetNormalHints (FRAME_X_DISPLAY (f), window, &hints); |
| 9166 #endif | |
| 9167 | |
| 9168 #ifdef USE_X_TOOLKIT | |
| 9169 size_hints.base_height = hints.base_height; | |
| 9170 size_hints.base_width = hints.base_width; | |
| 9171 size_hints.min_height = hints.min_height; | |
| 9172 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
|
9173 #endif |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
9174 |
| 12189 | 9175 if (flags) |
| 9176 size_hints.flags |= flags; | |
| 9177 else | |
| 9178 { | |
| 9179 if (value == 0) | |
| 9180 hints.flags = 0; | |
| 9181 if (hints.flags & PSize) | |
| 9182 size_hints.flags |= PSize; | |
| 9183 if (hints.flags & PPosition) | |
| 9184 size_hints.flags |= PPosition; | |
| 9185 if (hints.flags & USPosition) | |
| 9186 size_hints.flags |= USPosition; | |
| 9187 if (hints.flags & USSize) | |
| 9188 size_hints.flags |= USSize; | |
| 9189 } | |
| 9190 } | |
| 9191 | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9192 #ifndef USE_X_TOOLKIT |
| 12189 | 9193 no_read: |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9194 #endif |
|
6883
77ceede38423
(x_make_frame_visible): Don't call XMapSubwindows.
Richard M. Stallman <rms@gnu.org>
parents:
6791
diff
changeset
|
9195 |
|
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9196 #ifdef PWinGravity |
|
51213
791af636af55
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
51129
diff
changeset
|
9197 size_hints.win_gravity = f->win_gravity; |
|
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9198 size_hints.flags |= PWinGravity; |
|
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9199 |
|
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9200 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
|
9201 { |
|
7210
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9202 size_hints.flags &= ~ PPosition; |
|
682ff6213c36
(x_wm_set_size_hint): Always set PWinGravity.
Richard M. Stallman <rms@gnu.org>
parents:
7187
diff
changeset
|
9203 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
|
9204 } |
|
4777
21ed9c9bb210
(w_wn_set_size_hint): Make recent window gravity addition
Brian Fox <bfox@gnu.org>
parents:
4696
diff
changeset
|
9205 #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
|
9206 |
|
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
|
9207 #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
|
9208 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
|
9209 #else |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
9210 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
|
9211 #endif |
| 286 | 9212 } |
| 49322 | 9213 #endif /* not USE_GTK */ |
| 286 | 9214 |
| 9215 /* Used for IconicState or NormalState */ | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9216 |
| 21514 | 9217 void |
| 771 | 9218 x_wm_set_window_state (f, state) |
| 9219 struct frame *f; | |
| 286 | 9220 int state; |
| 9221 { | |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
9222 #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
|
9223 Arg al[1]; |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
9224 |
|
136819b017fc
(x_wm_set_window_state) [USE_X_TOOLKIT]: Use XtSetValues.
Richard M. Stallman <rms@gnu.org>
parents:
7508
diff
changeset
|
9225 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
|
9226 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
|
9227 #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
|
9228 Window window = FRAME_X_WINDOW (f); |
| 286 | 9229 |
|
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
9230 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
|
9231 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
|
9232 |
|
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
9233 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
|
9234 #endif /* not USE_X_TOOLKIT */ |
| 286 | 9235 } |
| 9236 | |
| 21514 | 9237 void |
|
9542
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
9238 x_wm_set_icon_pixmap (f, pixmap_id) |
| 771 | 9239 struct frame *f; |
|
9542
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
9240 int pixmap_id; |
| 286 | 9241 { |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
9242 Pixmap icon_pixmap, icon_mask; |
|
15117
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
9243 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9244 #ifndef USE_X_TOOLKIT |
| 49322 | 9245 Window window = FRAME_OUTER_WINDOW (f); |
|
7806
ef7a60d59543
(x_wm_set_icon_position, x_wm_set_icon_pixmap):
Richard M. Stallman <rms@gnu.org>
parents:
7801
diff
changeset
|
9246 #endif |
| 286 | 9247 |
|
9542
f8b7a65a94bc
(x_bitmap_icon): Allow bitmap to come from file.
Richard M. Stallman <rms@gnu.org>
parents:
9537
diff
changeset
|
9248 if (pixmap_id > 0) |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
9249 { |
|
15117
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
9250 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
|
9251 f->output_data.x->wm_hints.icon_pixmap = icon_pixmap; |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
9252 icon_mask = x_bitmap_mask (f, pixmap_id); |
|
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
9253 f->output_data.x->wm_hints.icon_mask = icon_mask; |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
9254 } |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
9255 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
|
9256 { |
|
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
|
9257 /* 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
|
9258 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
|
9259 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
|
9260 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
|
9261 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
|
9262 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
|
9263 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
|
9264 #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
|
9265 f->output_data.x->wm_hints.icon_pixmap = None; |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
9266 f->output_data.x->wm_hints.icon_mask = None; |
|
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
|
9267 #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
|
9268 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
|
9269 #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
|
9270 } |
|
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
9271 |
|
64937
9ac98d57e0e7
* xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
64770
diff
changeset
|
9272 |
|
9ac98d57e0e7
* xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
64770
diff
changeset
|
9273 #ifdef USE_GTK |
|
9ac98d57e0e7
* xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
64770
diff
changeset
|
9274 { |
|
65007
eac979ad3f3b
* xterm.c (x_wm_set_icon_pixmap): Move GTK specific code to
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
64937
diff
changeset
|
9275 xg_set_frame_icon (f, icon_pixmap, icon_mask); |
|
64937
9ac98d57e0e7
* xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
64770
diff
changeset
|
9276 return; |
|
9ac98d57e0e7
* xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
64770
diff
changeset
|
9277 } |
|
9ac98d57e0e7
* xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
64770
diff
changeset
|
9278 |
|
9ac98d57e0e7
* xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
64770
diff
changeset
|
9279 #elif defined (USE_X_TOOLKIT) /* same as in x_wm_set_window_state. */ |
|
15117
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
9280 |
|
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
9281 { |
|
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
9282 Arg al[1]; |
|
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
9283 XtSetArg (al[0], XtNiconPixmap, icon_pixmap); |
|
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
9284 XtSetValues (f->output_data.x->widget, al, 1); |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
9285 XtSetArg (al[0], XtNiconMask, icon_mask); |
|
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
9286 XtSetValues (f->output_data.x->widget, al, 1); |
|
15117
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
9287 } |
|
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
9288 |
|
64937
9ac98d57e0e7
* xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
64770
diff
changeset
|
9289 #else /* not USE_X_TOOLKIT && not USE_GTK */ |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9290 |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
9291 f->output_data.x->wm_hints.flags |= (IconPixmapHint | IconMaskHint); |
|
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
9292 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->output_data.x->wm_hints); |
|
15117
21673af29c32
[USE_X_TOOLKIT]: Include X11/Shell.h.
Richard M. Stallman <rms@gnu.org>
parents:
15080
diff
changeset
|
9293 |
|
64937
9ac98d57e0e7
* xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
64770
diff
changeset
|
9294 #endif /* not USE_X_TOOLKIT && not USE_GTK */ |
| 286 | 9295 } |
| 9296 | |
| 21514 | 9297 void |
| 771 | 9298 x_wm_set_icon_position (f, icon_x, icon_y) |
| 9299 struct frame *f; | |
| 286 | 9300 int icon_x, icon_y; |
| 9301 { | |
|
49644
834df49192b0
Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49600
diff
changeset
|
9302 Window window = FRAME_OUTER_WINDOW (f); |
| 286 | 9303 |
|
12667
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
9304 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
|
9305 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
|
9306 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
|
9307 |
|
a3466dad7d6d
Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents:
12657
diff
changeset
|
9308 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->output_data.x->wm_hints); |
| 286 | 9309 } |
| 9310 | |
| 9311 | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9312 /*********************************************************************** |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9313 Fonts |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9314 ***********************************************************************/ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9315 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9316 /* Return a pointer to struct font_info of font FONT_IDX of frame F. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9317 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9318 struct font_info * |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9319 x_get_font_info (f, font_idx) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9320 FRAME_PTR f; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9321 int font_idx; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9322 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9323 return (FRAME_X_FONT_TABLE (f) + font_idx); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9324 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9325 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9326 |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9327 /* Return a list of names of available fonts matching PATTERN on frame F. |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9328 |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9329 If SIZE is > 0, it is the size (maximum bounds width) of fonts |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9330 to be listed. |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9331 |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9332 SIZE < 0 means include scalable fonts. |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9333 |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9334 Frame F null means we have not yet created any frame on X, and |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9335 consult the first display in x_display_list. MAXNAMES sets a limit |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9336 on how many fonts to match. */ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9337 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9338 Lisp_Object |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9339 x_list_fonts (f, pattern, size, maxnames) |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9340 struct frame *f; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9341 Lisp_Object pattern; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9342 int size; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9343 int maxnames; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9344 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9345 Lisp_Object list = Qnil, patterns, newlist = Qnil, key = Qnil; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9346 Lisp_Object tem, second_best; |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9347 struct x_display_info *dpyinfo |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9348 = f ? FRAME_X_DISPLAY_INFO (f) : x_display_list; |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9349 Display *dpy = dpyinfo->display; |
|
22503
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9350 int try_XLoadQueryFont = 0; |
|
24633
c7d905dca6ba
(x_list_fonts): Fix previous change.
Karl Heuer <kwzh@gnu.org>
parents:
24618
diff
changeset
|
9351 int count; |
|
53038
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9352 int allow_auto_scaled_font = 0; |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9353 |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9354 if (size < 0) |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9355 { |
|
53038
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9356 allow_auto_scaled_font = 1; |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9357 size = 0; |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9358 } |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9359 |
|
19447
34099ec680df
(x_list_fonts): Adjusted for the name change of
Kenichi Handa <handa@m17n.org>
parents:
19276
diff
changeset
|
9360 patterns = Fassoc (pattern, Valternate_fontname_alist); |
|
18347
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9361 if (NILP (patterns)) |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9362 patterns = Fcons (pattern, Qnil); |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9363 |
|
22503
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9364 if (maxnames == 1 && !size) |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9365 /* We can return any single font matching PATTERN. */ |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9366 try_XLoadQueryFont = 1; |
|
19062
9cc02044117d
(x_list_fonts): Request at least 10 fonts by XListFonts.
Kenichi Handa <handa@m17n.org>
parents:
19060
diff
changeset
|
9367 |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9368 for (; CONSP (patterns); patterns = XCDR (patterns)) |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9369 { |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9370 int num_fonts; |
|
29600
a377acd06ea8
(x_frame_of_widget): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29536
diff
changeset
|
9371 char **names = NULL; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9372 |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9373 pattern = XCAR (patterns); |
|
19060
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9374 /* See if we cached the result for this particular query. |
|
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9375 The cache is an alist of the form: |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9376 ((((PATTERN . MAXNAMES) . SCALABLE) (FONTNAME . WIDTH) ...) ...) */ |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9377 tem = XCDR (dpyinfo->name_list_element); |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9378 key = Fcons (Fcons (pattern, make_number (maxnames)), |
|
53038
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9379 allow_auto_scaled_font ? Qt : Qnil); |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9380 list = Fassoc (key, tem); |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9381 if (!NILP (list)) |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9382 { |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9383 list = Fcdr_safe (list); |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9384 /* We have a cashed list. Don't have to get the list again. */ |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9385 goto label_cached; |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9386 } |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9387 |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9388 /* At first, put PATTERN in the cache. */ |
|
22503
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9389 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9390 BLOCK_INPUT; |
|
24618
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9391 count = x_catch_errors (dpy); |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9392 |
|
22503
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9393 if (try_XLoadQueryFont) |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9394 { |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9395 XFontStruct *font; |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9396 unsigned long value; |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9397 |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
9398 font = XLoadQueryFont (dpy, SDATA (pattern)); |
|
24618
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9399 if (x_had_errors_p (dpy)) |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9400 { |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9401 /* This error is perhaps due to insufficient memory on X |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9402 server. Let's just ignore it. */ |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9403 font = NULL; |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9404 x_clear_errors (dpy); |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9405 } |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9406 |
|
22503
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9407 if (font |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9408 && XGetFontProperty (font, XA_FONT, &value)) |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9409 { |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9410 char *name = (char *) XGetAtomName (dpy, (Atom) value); |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9411 int len = strlen (name); |
|
22530
6d2e22a16952
(x_list_fonts): Keep alloca usage simple.
Karl Heuer <kwzh@gnu.org>
parents:
22522
diff
changeset
|
9412 char *tmp; |
|
22503
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9413 |
|
23095
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9414 /* If DXPC (a Differential X Protocol Compressor) |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9415 Ver.3.7 is running, XGetAtomName will return null |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9416 string. We must avoid such a name. */ |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9417 if (len == 0) |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9418 try_XLoadQueryFont = 0; |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9419 else |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9420 { |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9421 num_fonts = 1; |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9422 names = (char **) alloca (sizeof (char *)); |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9423 /* Some systems only allow alloca assigned to a |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9424 simple var. */ |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9425 tmp = (char *) alloca (len + 1); names[0] = tmp; |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9426 bcopy (name, names[0], len + 1); |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9427 XFree (name); |
|
4e83e072cd97
(x_list_fonts): Work-around for the case XGetAtomName
Kenichi Handa <handa@m17n.org>
parents:
23037
diff
changeset
|
9428 } |
|
22503
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9429 } |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9430 else |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9431 try_XLoadQueryFont = 0; |
|
22943
5493321d4526
(x_list_fonts): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22907
diff
changeset
|
9432 |
|
5493321d4526
(x_list_fonts): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22907
diff
changeset
|
9433 if (font) |
|
5493321d4526
(x_list_fonts): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents:
22907
diff
changeset
|
9434 XFreeFont (dpy, font); |
|
22503
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9435 } |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9436 |
|
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9437 if (!try_XLoadQueryFont) |
|
24618
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9438 { |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9439 /* We try at least 10 fonts because XListFonts will return |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9440 auto-scaled fonts at the head. */ |
|
49859
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9441 if (maxnames < 0) |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9442 { |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9443 int limit; |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9444 |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9445 for (limit = 500;;) |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9446 { |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9447 names = XListFonts (dpy, SDATA (pattern), limit, &num_fonts); |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9448 if (num_fonts == limit) |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9449 { |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9450 BLOCK_INPUT; |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9451 XFreeFontNames (names); |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9452 UNBLOCK_INPUT; |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9453 limit *= 2; |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9454 } |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9455 else |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9456 break; |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9457 } |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9458 } |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9459 else |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9460 names = XListFonts (dpy, SDATA (pattern), max (maxnames, 10), |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9461 &num_fonts); |
|
c6bacc76cfb6
* xterm.c (x_list_fonts): If maxnames is less than 0, get all font
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49651
diff
changeset
|
9462 |
|
24618
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9463 if (x_had_errors_p (dpy)) |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9464 { |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9465 /* This error is perhaps due to insufficient memory on X |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9466 server. Let's just ignore it. */ |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9467 names = NULL; |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9468 x_clear_errors (dpy); |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9469 } |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9470 } |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9471 |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9472 x_uncatch_errors (dpy, count); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9473 UNBLOCK_INPUT; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9474 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9475 if (names) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9476 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9477 int i; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9478 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9479 /* Make a list of all the fonts we got back. |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9480 Store that in the font cache for the display. */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9481 for (i = 0; i < num_fonts; i++) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9482 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9483 int width = 0; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9484 char *p = names[i]; |
|
53038
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9485 int average_width = -1, resx = 0, dashes = 0; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9486 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9487 /* Count the number of dashes in NAMES[I]. If there are |
|
53038
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9488 14 dashes, the field value following 9th dash |
|
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9489 (RESOLUTION_X) is nonzero, and the field value |
|
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9490 following 12th dash (AVERAGE_WIDTH) is 0, this is a |
|
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9491 auto-scaled font which is usually too ugly to be used |
|
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9492 for editing. Let's ignore it. */ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9493 while (*p) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9494 if (*p++ == '-') |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9495 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9496 dashes++; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9497 if (dashes == 7) /* PIXEL_SIZE field */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9498 width = atoi (p); |
|
53038
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9499 else if (dashes == 9) |
|
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9500 resx = atoi (p); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9501 else if (dashes == 12) /* AVERAGE_WIDTH field */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9502 average_width = atoi (p); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9503 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9504 |
|
53038
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9505 if (allow_auto_scaled_font |
|
ea521a9007e2
(x_list_fonts): Fix excluding of auto-scaled fonts.
Kenichi Handa <handa@m17n.org>
parents:
53021
diff
changeset
|
9506 || dashes < 14 || average_width != 0 || resx == 0) |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9507 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9508 tem = build_string (names[i]); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9509 if (NILP (Fassoc (tem, list))) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9510 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9511 if (STRINGP (Vx_pixel_size_width_font_regexp) |
|
18191
3c353983bba9
(x_list_fonts): fast_c_string_match_ignore_case renamed.
Richard M. Stallman <rms@gnu.org>
parents:
18188
diff
changeset
|
9512 && ((fast_c_string_match_ignore_case |
|
3c353983bba9
(x_list_fonts): fast_c_string_match_ignore_case renamed.
Richard M. Stallman <rms@gnu.org>
parents:
18188
diff
changeset
|
9513 (Vx_pixel_size_width_font_regexp, names[i])) |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9514 >= 0)) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9515 /* We can set the value of PIXEL_SIZE to the |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9516 width of this font. */ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9517 list = Fcons (Fcons (tem, make_number (width)), list); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9518 else |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9519 /* For the moment, width is not known. */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9520 list = Fcons (Fcons (tem, Qnil), list); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9521 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9522 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9523 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9524 |
|
22503
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9525 if (!try_XLoadQueryFont) |
|
38246
b93fb0eb254d
(x_list_fonts): Make sure XFreeFont is called
Gerd Moellmann <gerd@gnu.org>
parents:
38094
diff
changeset
|
9526 { |
|
b93fb0eb254d
(x_list_fonts): Make sure XFreeFont is called
Gerd Moellmann <gerd@gnu.org>
parents:
38094
diff
changeset
|
9527 BLOCK_INPUT; |
|
b93fb0eb254d
(x_list_fonts): Make sure XFreeFont is called
Gerd Moellmann <gerd@gnu.org>
parents:
38094
diff
changeset
|
9528 XFreeFontNames (names); |
|
b93fb0eb254d
(x_list_fonts): Make sure XFreeFont is called
Gerd Moellmann <gerd@gnu.org>
parents:
38094
diff
changeset
|
9529 UNBLOCK_INPUT; |
|
b93fb0eb254d
(x_list_fonts): Make sure XFreeFont is called
Gerd Moellmann <gerd@gnu.org>
parents:
38094
diff
changeset
|
9530 } |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9531 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9532 |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9533 /* Now store the result in the cache. */ |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9534 XSETCDR (dpyinfo->name_list_element, |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9535 Fcons (Fcons (key, list), XCDR (dpyinfo->name_list_element))); |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9536 |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9537 label_cached: |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9538 if (NILP (list)) continue; /* Try the remaining alternatives. */ |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9539 |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9540 newlist = second_best = Qnil; |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9541 /* Make a list of the fonts that have the right width. */ |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9542 for (; CONSP (list); list = XCDR (list)) |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9543 { |
|
19060
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9544 int found_size; |
|
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9545 |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9546 tem = XCAR (list); |
|
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9547 |
|
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9548 if (!CONSP (tem) || NILP (XCAR (tem))) |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9549 continue; |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9550 if (!size) |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9551 { |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9552 newlist = Fcons (XCAR (tem), newlist); |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9553 continue; |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9554 } |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9555 |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9556 if (!INTEGERP (XCDR (tem))) |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9557 { |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9558 /* Since we have not yet known the size of this font, we |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9559 must try slow function call XLoadQueryFont. */ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9560 XFontStruct *thisinfo; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9561 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9562 BLOCK_INPUT; |
|
24618
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9563 count = x_catch_errors (dpy); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9564 thisinfo = XLoadQueryFont (dpy, |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
9565 SDATA (XCAR (tem))); |
|
24618
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9566 if (x_had_errors_p (dpy)) |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9567 { |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9568 /* This error is perhaps due to insufficient memory on X |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9569 server. Let's just ignore it. */ |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9570 thisinfo = NULL; |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9571 x_clear_errors (dpy); |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9572 } |
|
b18f51ec1b6c
Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24561
diff
changeset
|
9573 x_uncatch_errors (dpy, count); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9574 UNBLOCK_INPUT; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9575 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9576 if (thisinfo) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9577 { |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9578 XSETCDR (tem, |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9579 (thisinfo->min_bounds.width == 0 |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9580 ? make_number (0) |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9581 : make_number (thisinfo->max_bounds.width))); |
|
38246
b93fb0eb254d
(x_list_fonts): Make sure XFreeFont is called
Gerd Moellmann <gerd@gnu.org>
parents:
38094
diff
changeset
|
9582 BLOCK_INPUT; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9583 XFreeFont (dpy, thisinfo); |
|
38246
b93fb0eb254d
(x_list_fonts): Make sure XFreeFont is called
Gerd Moellmann <gerd@gnu.org>
parents:
38094
diff
changeset
|
9584 UNBLOCK_INPUT; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9585 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9586 else |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9587 /* For unknown reason, the previous call of XListFont had |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9588 returned a font which can't be opened. Record the size |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9589 as 0 not to try to open it again. */ |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9590 XSETCDR (tem, make_number (0)); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9591 } |
|
19060
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9592 |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9593 found_size = XINT (XCDR (tem)); |
|
19060
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9594 if (found_size == size) |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9595 newlist = Fcons (XCAR (tem), newlist); |
|
19060
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9596 else if (found_size > 0) |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9597 { |
|
19060
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9598 if (NILP (second_best)) |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9599 second_best = tem; |
|
19060
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9600 else if (found_size < size) |
|
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9601 { |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9602 if (XINT (XCDR (second_best)) > size |
|
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9603 || XINT (XCDR (second_best)) < found_size) |
|
19060
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9604 second_best = tem; |
|
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9605 } |
|
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9606 else |
|
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9607 { |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9608 if (XINT (XCDR (second_best)) > size |
|
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9609 && XINT (XCDR (second_best)) > found_size) |
|
19060
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9610 second_best = tem; |
|
7b362a9bf8e9
(x_list_fonts): Reject a font whose min_bounds.width is 0.
Richard M. Stallman <rms@gnu.org>
parents:
19027
diff
changeset
|
9611 } |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9612 } |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9613 } |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9614 if (!NILP (newlist)) |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9615 break; |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9616 else if (!NILP (second_best)) |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9617 { |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9618 newlist = Fcons (XCAR (second_best), Qnil); |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9619 break; |
|
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9620 } |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9621 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9622 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9623 return newlist; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9624 } |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9625 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9626 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9627 #if GLYPH_DEBUG |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9628 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9629 /* Check that FONT is valid on frame F. It is if it can be found in F's |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9630 font table. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9631 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9632 static void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9633 x_check_font (f, font) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9634 struct frame *f; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9635 XFontStruct *font; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9636 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9637 int i; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9638 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9639 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9640 xassert (font != NULL); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9641 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9642 for (i = 0; i < dpyinfo->n_fonts; i++) |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9643 if (dpyinfo->font_table[i].name |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9644 && font == dpyinfo->font_table[i].font) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9645 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9646 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9647 xassert (i < dpyinfo->n_fonts); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9648 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9649 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9650 #endif /* GLYPH_DEBUG != 0 */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9651 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9652 /* Set *W to the minimum width, *H to the minimum font height of FONT. |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9653 Note: There are (broken) X fonts out there with invalid XFontStruct |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9654 min_bounds contents. For example, handa@etl.go.jp reports that |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9655 "-adobe-courier-medium-r-normal--*-180-*-*-m-*-iso8859-1" fonts |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9656 have font->min_bounds.width == 0. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9657 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9658 static INLINE void |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9659 x_font_min_bounds (font, w, h) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9660 XFontStruct *font; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9661 int *w, *h; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9662 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9663 *h = FONT_HEIGHT (font); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9664 *w = font->min_bounds.width; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9665 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9666 /* Try to handle the case where FONT->min_bounds has invalid |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9667 contents. Since the only font known to have invalid min_bounds |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9668 is fixed-width, use max_bounds if min_bounds seems to be invalid. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9669 if (*w <= 0) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9670 *w = font->max_bounds.width; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9671 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9672 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9673 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9674 /* Compute the smallest character width and smallest font height over |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9675 all fonts available on frame F. Set the members smallest_char_width |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9676 and smallest_font_height in F's x_display_info structure to |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9677 the values computed. Value is non-zero if smallest_font_height or |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9678 smallest_char_width become smaller than they were before. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9679 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9680 static int |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9681 x_compute_min_glyph_bounds (f) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9682 struct frame *f; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9683 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9684 int i; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9685 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9686 XFontStruct *font; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9687 int old_width = dpyinfo->smallest_char_width; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9688 int old_height = dpyinfo->smallest_font_height; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9689 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9690 dpyinfo->smallest_font_height = 100000; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9691 dpyinfo->smallest_char_width = 100000; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9692 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9693 for (i = 0; i < dpyinfo->n_fonts; ++i) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9694 if (dpyinfo->font_table[i].name) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9695 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9696 struct font_info *fontp = dpyinfo->font_table + i; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9697 int w, h; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9698 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9699 font = (XFontStruct *) fontp->font; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9700 xassert (font != (XFontStruct *) ~0); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9701 x_font_min_bounds (font, &w, &h); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9702 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9703 dpyinfo->smallest_font_height = min (dpyinfo->smallest_font_height, h); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9704 dpyinfo->smallest_char_width = min (dpyinfo->smallest_char_width, w); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9705 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9706 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9707 xassert (dpyinfo->smallest_char_width > 0 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9708 && dpyinfo->smallest_font_height > 0); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9709 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9710 return (dpyinfo->n_fonts == 1 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9711 || dpyinfo->smallest_char_width < old_width |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9712 || dpyinfo->smallest_font_height < old_height); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9713 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9714 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9715 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9716 /* Load font named FONTNAME of the size SIZE for frame F, and return a |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9717 pointer to the structure font_info while allocating it dynamically. |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9718 If SIZE is 0, load any size of font. |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9719 If loading is failed, return NULL. */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9720 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9721 struct font_info * |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9722 x_load_font (f, fontname, size) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9723 struct frame *f; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9724 register char *fontname; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9725 int size; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9726 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9727 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9728 Lisp_Object font_names; |
|
24484
d4ee4399e999
(x_list_fonts): Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24224
diff
changeset
|
9729 int count; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9730 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9731 /* Get a list of all the fonts that match this name. Once we |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9732 have a list of matching fonts, we compare them against the fonts |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9733 we already have by comparing names. */ |
|
22503
104e277d77d3
(x_list_fonts): If SIZE is zero and MAXNAMES is 1, use
Kenichi Handa <handa@m17n.org>
parents:
22400
diff
changeset
|
9734 font_names = x_list_fonts (f, build_string (fontname), size, 1); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9735 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9736 if (!NILP (font_names)) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9737 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9738 Lisp_Object tail; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9739 int i; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9740 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9741 for (i = 0; i < dpyinfo->n_fonts; i++) |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9742 for (tail = font_names; CONSP (tail); tail = XCDR (tail)) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9743 if (dpyinfo->font_table[i].name |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9744 && (!strcmp (dpyinfo->font_table[i].name, |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
9745 SDATA (XCAR (tail))) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9746 || !strcmp (dpyinfo->font_table[i].full_name, |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
9747 SDATA (XCAR (tail))))) |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9748 return (dpyinfo->font_table + i); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9749 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9750 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9751 /* Load the font and add it to the table. */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9752 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9753 char *full_name; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9754 XFontStruct *font; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9755 struct font_info *fontp; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9756 unsigned long value; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9757 int i; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9758 |
|
18347
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9759 /* If we have found fonts by x_list_font, load one of them. If |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9760 not, we still try to load a font by the name given as FONTNAME |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9761 because XListFonts (called in x_list_font) of some X server has |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9762 a bug of not finding a font even if the font surely exists and |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9763 is loadable by XLoadQueryFont. */ |
|
23162
b36799069143
(x_load_font): If SIZE is 0, don't use a name x_list_font returns.
Kenichi Handa <handa@m17n.org>
parents:
23151
diff
changeset
|
9764 if (size > 0 && !NILP (font_names)) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
9765 fontname = (char *) SDATA (XCAR (font_names)); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9766 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9767 BLOCK_INPUT; |
|
24484
d4ee4399e999
(x_list_fonts): Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24224
diff
changeset
|
9768 count = x_catch_errors (FRAME_X_DISPLAY (f)); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9769 font = (XFontStruct *) XLoadQueryFont (FRAME_X_DISPLAY (f), fontname); |
|
24484
d4ee4399e999
(x_list_fonts): Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24224
diff
changeset
|
9770 if (x_had_errors_p (FRAME_X_DISPLAY (f))) |
|
d4ee4399e999
(x_list_fonts): Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24224
diff
changeset
|
9771 { |
|
d4ee4399e999
(x_list_fonts): Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24224
diff
changeset
|
9772 /* This error is perhaps due to insufficient memory on X |
|
d4ee4399e999
(x_list_fonts): Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24224
diff
changeset
|
9773 server. Let's just ignore it. */ |
|
d4ee4399e999
(x_list_fonts): Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24224
diff
changeset
|
9774 font = NULL; |
|
d4ee4399e999
(x_list_fonts): Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24224
diff
changeset
|
9775 x_clear_errors (FRAME_X_DISPLAY (f)); |
|
d4ee4399e999
(x_list_fonts): Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24224
diff
changeset
|
9776 } |
|
d4ee4399e999
(x_list_fonts): Trap X errors so that Emacs doesn't die
Kenichi Handa <handa@m17n.org>
parents:
24224
diff
changeset
|
9777 x_uncatch_errors (FRAME_X_DISPLAY (f), count); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9778 UNBLOCK_INPUT; |
|
17194
ae76b2a59dcc
(dumpglyphs): Set a clipping region when we draw glyphs
Kenichi Handa <handa@m17n.org>
parents:
17178
diff
changeset
|
9779 if (!font) |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9780 return NULL; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9781 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9782 /* Find a free slot in the font table. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9783 for (i = 0; i < dpyinfo->n_fonts; ++i) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9784 if (dpyinfo->font_table[i].name == NULL) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9785 break; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9786 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9787 /* If no free slot found, maybe enlarge the font table. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9788 if (i == dpyinfo->n_fonts |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9789 && dpyinfo->n_fonts == dpyinfo->font_table_size) |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9790 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9791 int sz; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9792 dpyinfo->font_table_size = max (16, 2 * dpyinfo->font_table_size); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9793 sz = dpyinfo->font_table_size * sizeof *dpyinfo->font_table; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9794 dpyinfo->font_table |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9795 = (struct font_info *) xrealloc (dpyinfo->font_table, sz); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9796 } |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9797 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9798 fontp = dpyinfo->font_table + i; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9799 if (i == dpyinfo->n_fonts) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9800 ++dpyinfo->n_fonts; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9801 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9802 /* Now fill in the slots of *FONTP. */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9803 BLOCK_INPUT; |
|
52730
7535333d9c75
(x_load_font): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents:
52728
diff
changeset
|
9804 bzero (fontp, sizeof (*fontp)); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9805 fontp->font = font; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9806 fontp->font_idx = i; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9807 fontp->name = (char *) xmalloc (strlen (fontname) + 1); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9808 bcopy (fontname, fontp->name, strlen (fontname) + 1); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9809 |
|
59206
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9810 if (font->min_bounds.width == font->max_bounds.width) |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9811 { |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9812 /* Fixed width font. */ |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9813 fontp->average_width = fontp->space_width = font->min_bounds.width; |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9814 } |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9815 else |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9816 { |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9817 XChar2b char2b; |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9818 XCharStruct *pcm; |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9819 |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9820 char2b.byte1 = 0x00, char2b.byte2 = 0x20; |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9821 pcm = x_per_char_metric (font, &char2b, 0); |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9822 if (pcm) |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9823 fontp->space_width = pcm->width; |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9824 else |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9825 fontp->space_width = FONT_WIDTH (font); |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9826 |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9827 fontp->average_width |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9828 = (XGetFontProperty (font, dpyinfo->Xatom_AVERAGE_WIDTH, &value) |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9829 ? (long) value / 10 : 0); |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9830 if (fontp->average_width < 0) |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9831 fontp->average_width = - fontp->average_width; |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9832 if (fontp->average_width == 0) |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9833 { |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9834 if (pcm) |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9835 { |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9836 int width = pcm->width; |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9837 for (char2b.byte2 = 33; char2b.byte2 <= 126; char2b.byte2++) |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9838 if ((pcm = x_per_char_metric (font, &char2b, 0)) != NULL) |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9839 width += pcm->width; |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9840 fontp->average_width = width / 95; |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9841 } |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9842 else |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9843 fontp->average_width = FONT_WIDTH (font); |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9844 } |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9845 } |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
9846 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9847 /* Try to get the full name of FONT. Put it in FULL_NAME. */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9848 full_name = 0; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9849 if (XGetFontProperty (font, XA_FONT, &value)) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9850 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9851 char *name = (char *) XGetAtomName (FRAME_X_DISPLAY (f), (Atom) value); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9852 char *p = name; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9853 int dashes = 0; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9854 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9855 /* Count the number of dashes in the "full name". |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9856 If it is too few, this isn't really the font's full name, |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9857 so don't use it. |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9858 In X11R4, the fonts did not come with their canonical names |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9859 stored in them. */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9860 while (*p) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9861 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9862 if (*p == '-') |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9863 dashes++; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9864 p++; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9865 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9866 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9867 if (dashes >= 13) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9868 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9869 full_name = (char *) xmalloc (p - name + 1); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9870 bcopy (name, full_name, p - name + 1); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9871 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9872 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9873 XFree (name); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9874 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
9875 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9876 if (full_name != 0) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9877 fontp->full_name = full_name; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9878 else |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9879 fontp->full_name = fontp->name; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9880 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9881 fontp->size = font->max_bounds.width; |
|
24224
4001ff593a99
(x_load_font): For the height of font, if normarl ascent and
Kenichi Handa <handa@m17n.org>
parents:
24223
diff
changeset
|
9882 fontp->height = FONT_HEIGHT (font); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9883 |
|
18347
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9884 if (NILP (font_names)) |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9885 { |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9886 /* We come here because of a bug of XListFonts mentioned at |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9887 the head of this block. Let's store this information in |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9888 the cache for x_list_fonts. */ |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9889 Lisp_Object lispy_name = build_string (fontname); |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9890 Lisp_Object lispy_full_name = build_string (fontp->full_name); |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9891 Lisp_Object key = Fcons (Fcons (lispy_name, make_number (256)), |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9892 Qnil); |
|
18347
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9893 |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9894 XSETCDR (dpyinfo->name_list_element, |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9895 Fcons (Fcons (key, |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9896 Fcons (Fcons (lispy_full_name, |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9897 make_number (fontp->size)), |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9898 Qnil)), |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9899 XCDR (dpyinfo->name_list_element))); |
|
18347
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9900 if (full_name) |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9901 { |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9902 key = Fcons (Fcons (lispy_full_name, make_number (256)), |
|
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9903 Qnil); |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9904 XSETCDR (dpyinfo->name_list_element, |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9905 Fcons (Fcons (key, |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9906 Fcons (Fcons (lispy_full_name, |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9907 make_number (fontp->size)), |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9908 Qnil)), |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
9909 XCDR (dpyinfo->name_list_element))); |
|
35367
68000d773920
(x_list_fonts): Allow scalable fonts if SIZE is < 0,
Gerd Moellmann <gerd@gnu.org>
parents:
35315
diff
changeset
|
9910 } |
|
18347
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9911 } |
|
b7024f44f5d2
(dumpglyphs): Use FS_LOAD_FONT.
Kenichi Handa <handa@m17n.org>
parents:
18191
diff
changeset
|
9912 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9913 /* The slot `encoding' specifies how to map a character |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9914 code-points (0x20..0x7F or 0x2020..0x7F7F) of each charset to |
|
28231
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
9915 the font code-points (0:0x20..0x7F, 1:0xA0..0xFF), or |
|
076ed36c3101
Include fontset.h after dispextern.h.
Kenichi Handa <handa@m17n.org>
parents:
28183
diff
changeset
|
9916 (0:0x2020..0x7F7F, 1:0xA0A0..0xFFFF, 3:0x20A0..0x7FFF, |
|
18057
07e0112aa8f5
(x_load_font): Use macro FONT_ENCODING_NOT_DECIDED.
Richard M. Stallman <rms@gnu.org>
parents:
18008
diff
changeset
|
9917 2:0xA020..0xFF7F). For the moment, we don't know which charset |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9918 uses this font. So, we set information in fontp->encoding[1] |
|
18057
07e0112aa8f5
(x_load_font): Use macro FONT_ENCODING_NOT_DECIDED.
Richard M. Stallman <rms@gnu.org>
parents:
18008
diff
changeset
|
9919 which is never used by any charset. If mapping can't be |
|
07e0112aa8f5
(x_load_font): Use macro FONT_ENCODING_NOT_DECIDED.
Richard M. Stallman <rms@gnu.org>
parents:
18008
diff
changeset
|
9920 decided, set FONT_ENCODING_NOT_DECIDED. */ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9921 fontp->encoding[1] |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9922 = (font->max_byte1 == 0 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9923 /* 1-byte font */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9924 ? (font->min_char_or_byte2 < 0x80 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9925 ? (font->max_char_or_byte2 < 0x80 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9926 ? 0 /* 0x20..0x7F */ |
|
18057
07e0112aa8f5
(x_load_font): Use macro FONT_ENCODING_NOT_DECIDED.
Richard M. Stallman <rms@gnu.org>
parents:
18008
diff
changeset
|
9927 : FONT_ENCODING_NOT_DECIDED) /* 0x20..0xFF */ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9928 : 1) /* 0xA0..0xFF */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9929 /* 2-byte font */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9930 : (font->min_byte1 < 0x80 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9931 ? (font->max_byte1 < 0x80 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9932 ? (font->min_char_or_byte2 < 0x80 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9933 ? (font->max_char_or_byte2 < 0x80 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9934 ? 0 /* 0x2020..0x7F7F */ |
|
18057
07e0112aa8f5
(x_load_font): Use macro FONT_ENCODING_NOT_DECIDED.
Richard M. Stallman <rms@gnu.org>
parents:
18008
diff
changeset
|
9935 : FONT_ENCODING_NOT_DECIDED) /* 0x2020..0x7FFF */ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9936 : 3) /* 0x20A0..0x7FFF */ |
|
18057
07e0112aa8f5
(x_load_font): Use macro FONT_ENCODING_NOT_DECIDED.
Richard M. Stallman <rms@gnu.org>
parents:
18008
diff
changeset
|
9937 : FONT_ENCODING_NOT_DECIDED) /* 0x20??..0xA0?? */ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9938 : (font->min_char_or_byte2 < 0x80 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9939 ? (font->max_char_or_byte2 < 0x80 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9940 ? 2 /* 0xA020..0xFF7F */ |
|
18057
07e0112aa8f5
(x_load_font): Use macro FONT_ENCODING_NOT_DECIDED.
Richard M. Stallman <rms@gnu.org>
parents:
18008
diff
changeset
|
9941 : FONT_ENCODING_NOT_DECIDED) /* 0xA020..0xFFFF */ |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9942 : 1))); /* 0xA0A0..0xFFFF */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9943 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9944 fontp->baseline_offset |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9945 = (XGetFontProperty (font, dpyinfo->Xatom_MULE_BASELINE_OFFSET, &value) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9946 ? (long) value : 0); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9947 fontp->relative_compose |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9948 = (XGetFontProperty (font, dpyinfo->Xatom_MULE_RELATIVE_COMPOSE, &value) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9949 ? (long) value : 0); |
|
17103
7cde34a6424e
(dumpglyphs): Pay attention to characters registered in
Kenichi Handa <handa@m17n.org>
parents:
17050
diff
changeset
|
9950 fontp->default_ascent |
|
7cde34a6424e
(dumpglyphs): Pay attention to characters registered in
Kenichi Handa <handa@m17n.org>
parents:
17050
diff
changeset
|
9951 = (XGetFontProperty (font, dpyinfo->Xatom_MULE_DEFAULT_ASCENT, &value) |
|
7cde34a6424e
(dumpglyphs): Pay attention to characters registered in
Kenichi Handa <handa@m17n.org>
parents:
17050
diff
changeset
|
9952 ? (long) value : 0); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9953 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9954 /* Set global flag fonts_changed_p to non-zero if the font loaded |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9955 has a character with a smaller width than any other character |
|
42688
21f5612addbb
(x_load_font): Never set fonts_changed_p to zero.
Andreas Schwab <schwab@suse.de>
parents:
42675
diff
changeset
|
9956 before, or if the font loaded has a smaller height than any |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9957 other font loaded before. If this happens, it will make a |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9958 glyph matrix reallocation necessary. */ |
|
42688
21f5612addbb
(x_load_font): Never set fonts_changed_p to zero.
Andreas Schwab <schwab@suse.de>
parents:
42675
diff
changeset
|
9959 fonts_changed_p |= x_compute_min_glyph_bounds (f); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9960 UNBLOCK_INPUT; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9961 return fontp; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9962 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9963 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9964 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9965 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9966 /* Return a pointer to struct font_info of a font named FONTNAME for |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9967 frame F. If no such font is loaded, return NULL. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9968 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9969 struct font_info * |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9970 x_query_font (f, fontname) |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9971 struct frame *f; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9972 register char *fontname; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9973 { |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9974 struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9975 int i; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9976 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9977 for (i = 0; i < dpyinfo->n_fonts; i++) |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9978 if (dpyinfo->font_table[i].name |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9979 && (!strcmp (dpyinfo->font_table[i].name, fontname) |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9980 || !strcmp (dpyinfo->font_table[i].full_name, fontname))) |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9981 return (dpyinfo->font_table + i); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9982 return NULL; |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9983 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
9984 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9985 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
9986 /* Find a CCL program for a font specified by FONTP, and set the member |
|
21548
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
9987 `encoder' of the structure. */ |
|
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
9988 |
|
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
9989 void |
|
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
9990 x_find_ccl_program (fontp) |
|
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
9991 struct font_info *fontp; |
|
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
9992 { |
|
25068
0d081383b5b8
(x_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents:
24991
diff
changeset
|
9993 Lisp_Object list, elt; |
|
21548
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
9994 |
|
31694
97c48afc4c5a
(x_draw_image_glyph_string): Remove a comment describing
Gerd Moellmann <gerd@gnu.org>
parents:
31614
diff
changeset
|
9995 elt = Qnil; |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9996 for (list = Vfont_ccl_encoder_alist; CONSP (list); list = XCDR (list)) |
|
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9997 { |
|
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
9998 elt = XCAR (list); |
|
21548
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
9999 if (CONSP (elt) |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
10000 && STRINGP (XCAR (elt)) |
|
32640
9adbb2160f48
(x_find_ccl_program): Check also fontp->full_name.
Kenichi Handa <handa@m17n.org>
parents:
32607
diff
changeset
|
10001 && ((fast_c_string_match_ignore_case (XCAR (elt), fontp->name) |
|
9adbb2160f48
(x_find_ccl_program): Check also fontp->full_name.
Kenichi Handa <handa@m17n.org>
parents:
32607
diff
changeset
|
10002 >= 0) |
|
9adbb2160f48
(x_find_ccl_program): Check also fontp->full_name.
Kenichi Handa <handa@m17n.org>
parents:
32607
diff
changeset
|
10003 || (fast_c_string_match_ignore_case (XCAR (elt), fontp->full_name) |
|
9adbb2160f48
(x_find_ccl_program): Check also fontp->full_name.
Kenichi Handa <handa@m17n.org>
parents:
32607
diff
changeset
|
10004 >= 0))) |
|
25068
0d081383b5b8
(x_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents:
24991
diff
changeset
|
10005 break; |
|
0d081383b5b8
(x_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents:
24991
diff
changeset
|
10006 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10007 |
|
25068
0d081383b5b8
(x_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents:
24991
diff
changeset
|
10008 if (! NILP (list)) |
|
0d081383b5b8
(x_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents:
24991
diff
changeset
|
10009 { |
|
25085
23813e3a69b8
(x_find_ccl_program): Add casting.
Kenichi Handa <handa@m17n.org>
parents:
25083
diff
changeset
|
10010 struct ccl_program *ccl |
|
23813e3a69b8
(x_find_ccl_program): Add casting.
Kenichi Handa <handa@m17n.org>
parents:
25083
diff
changeset
|
10011 = (struct ccl_program *) xmalloc (sizeof (struct ccl_program)); |
|
25068
0d081383b5b8
(x_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents:
24991
diff
changeset
|
10012 |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
10013 if (setup_ccl_program (ccl, XCDR (elt)) < 0) |
|
25068
0d081383b5b8
(x_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents:
24991
diff
changeset
|
10014 xfree (ccl); |
|
0d081383b5b8
(x_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents:
24991
diff
changeset
|
10015 else |
|
0d081383b5b8
(x_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents:
24991
diff
changeset
|
10016 fontp->font_encoder = ccl; |
|
21548
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
10017 } |
|
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
10018 } |
|
5d1f1ba38043
(x_find_ccl_program): New function.
Kenichi Handa <handa@m17n.org>
parents:
21514
diff
changeset
|
10019 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10020 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10021 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10022 /*********************************************************************** |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10023 Initialization |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10024 ***********************************************************************/ |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
10025 |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10026 #ifdef USE_X_TOOLKIT |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10027 static XrmOptionDescRec emacs_options[] = { |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10028 {"-geometry", ".geometry", XrmoptionSepArg, NULL}, |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10029 {"-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
|
10030 |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10031 {"-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
|
10032 XrmoptionSepArg, NULL}, |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10033 {"-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
|
10034 |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10035 {"-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
|
10036 {"-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
|
10037 {"-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
|
10038 {"-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
|
10039 {"-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
|
10040 {"-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
|
10041 {"-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
|
10042 }; |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10043 #endif /* USE_X_TOOLKIT */ |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10044 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10045 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
|
10046 |
| 11015 | 10047 #ifdef MULTI_KBOARD |
| 10048 /* Test whether two display-name strings agree up to the dot that separates | |
| 10049 the screen number from the server number. */ | |
| 10050 static int | |
| 10051 same_x_server (name1, name2) | |
|
46479
4729f849c572
(same_x_server): String pointer args now point to
Ken Raeburn <raeburn@raeburn.org>
parents:
46435
diff
changeset
|
10052 const char *name1, *name2; |
| 11015 | 10053 { |
| 10054 int seen_colon = 0; | |
|
46479
4729f849c572
(same_x_server): String pointer args now point to
Ken Raeburn <raeburn@raeburn.org>
parents:
46435
diff
changeset
|
10055 const unsigned char *system_name = SDATA (Vsystem_name); |
|
24164
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10056 int system_name_length = strlen (system_name); |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10057 int length_until_period = 0; |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10058 |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10059 while (system_name[length_until_period] != 0 |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10060 && system_name[length_until_period] != '.') |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10061 length_until_period++; |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10062 |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10063 /* Treat `unix' like an empty host name. */ |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10064 if (! strncmp (name1, "unix:", 5)) |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10065 name1 += 4; |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10066 if (! strncmp (name2, "unix:", 5)) |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10067 name2 += 4; |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10068 /* Treat this host's name like an empty host name. */ |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10069 if (! strncmp (name1, system_name, system_name_length) |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10070 && name1[system_name_length] == ':') |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10071 name1 += system_name_length; |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10072 if (! strncmp (name2, system_name, system_name_length) |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10073 && name2[system_name_length] == ':') |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10074 name2 += system_name_length; |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10075 /* Treat this host's domainless name like an empty host name. */ |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10076 if (! strncmp (name1, system_name, length_until_period) |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10077 && name1[length_until_period] == ':') |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10078 name1 += length_until_period; |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10079 if (! strncmp (name2, system_name, length_until_period) |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10080 && name2[length_until_period] == ':') |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10081 name2 += length_until_period; |
|
1f8d4cb55bd6
(same_x_server): Detect treat ":0" and "unix:0"
Richard M. Stallman <rms@gnu.org>
parents:
23925
diff
changeset
|
10082 |
| 11015 | 10083 for (; *name1 != '\0' && *name1 == *name2; name1++, name2++) |
| 10084 { | |
| 10085 if (*name1 == ':') | |
| 10086 seen_colon++; | |
| 10087 if (seen_colon && *name1 == '.') | |
| 10088 return 1; | |
| 10089 } | |
| 10090 return (seen_colon | |
| 10091 && (*name1 == '.' || *name1 == '\0') | |
| 10092 && (*name2 == '.' || *name2 == '\0')); | |
| 10093 } | |
| 10094 #endif | |
| 10095 | |
|
52387
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10096 /* Count number of set bits in mask and number of bits to shift to |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10097 get to the first bit. With MASK 0x7e0, *BITS is set to 6, and *OFFSET |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10098 to 5. */ |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10099 static void |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10100 get_bits_and_offset (mask, bits, offset) |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10101 unsigned long mask; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10102 int *bits; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10103 int *offset; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10104 { |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10105 int nr = 0; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10106 int off = 0; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10107 |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10108 while (!(mask & 1)) |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10109 { |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10110 off++; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10111 mask >>= 1; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10112 } |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10113 |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10114 while (mask & 1) |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10115 { |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10116 nr++; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10117 mask >>= 1; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10118 } |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10119 |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10120 *offset = off; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10121 *bits = nr; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10122 } |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10123 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10124 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
|
10125 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
|
10126 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
|
10127 char *xrm_option; |
|
10e818a0248a
(x_term_init): New args xrm_option and resource_string.
Richard M. Stallman <rms@gnu.org>
parents:
7738
diff
changeset
|
10128 char *resource_name; |
| 286 | 10129 { |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10130 int connection; |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10131 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
|
10132 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
|
10133 XrmDatabase xrdb; |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10134 |
|
11997
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
10135 BLOCK_INPUT; |
|
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
10136 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10137 if (!x_initialized) |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10138 { |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10139 x_initialize (); |
|
52298
1a4bd2bec861
Create and initialize a client leader window so session management
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52258
diff
changeset
|
10140 ++x_initialized; |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10141 } |
| 286 | 10142 |
| 49322 | 10143 #ifdef USE_GTK |
| 10144 { | |
| 10145 #define NUM_ARGV 10 | |
| 10146 int argc; | |
| 10147 char *argv[NUM_ARGV]; | |
| 10148 char **argv2 = argv; | |
| 10149 GdkAtom atom; | |
| 10150 | |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10151 if (x_initialized++ > 1) |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10152 { |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10153 /* Opening another display. If xg_display_open returns less |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10154 than zero, we are probably on GTK 2.0, which can only handle |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10155 one display. GTK 2.2 or later can handle more than one. */ |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10156 if (xg_display_open (SDATA (display_name), &dpy) < 0) |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10157 error ("Sorry, this version of GTK can only handle one display"); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10158 } |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10159 else |
| 49322 | 10160 { |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10161 for (argc = 0; argc < NUM_ARGV; ++argc) |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10162 argv[argc] = 0; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10163 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10164 argc = 0; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10165 argv[argc++] = initial_argv[0]; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10166 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10167 if (! NILP (display_name)) |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10168 { |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10169 argv[argc++] = "--display"; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10170 argv[argc++] = SDATA (display_name); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10171 } |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10172 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10173 argv[argc++] = "--name"; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10174 argv[argc++] = resource_name; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49434
diff
changeset
|
10175 |
|
49434
a4d0ee33dcce
Fix input methods for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
49326
diff
changeset
|
10176 #ifdef HAVE_X11R5 |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10177 XSetLocaleModifiers (""); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10178 #endif |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10179 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10180 gtk_init (&argc, &argv2); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10181 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10182 /* gtk_init does set_locale. We must fix locale after calling it. */ |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10183 fixup_locale (); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10184 xg_initialize (); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10185 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10186 dpy = GDK_DISPLAY (); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10187 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10188 /* NULL window -> events for all windows go to our function */ |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10189 gdk_window_add_filter (NULL, event_handler_gdk, NULL); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10190 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10191 /* Load our own gtkrc if it exists. */ |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10192 { |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10193 struct gcpro gcpro1, gcpro2; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10194 char *file = "~/.emacs.d/gtkrc"; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10195 Lisp_Object s, abs_file; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10196 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10197 GCPRO2 (s, abs_file); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10198 s = make_string (file, strlen (file)); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10199 abs_file = Fexpand_file_name (s, Qnil); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10200 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10201 if (! NILP (abs_file) && !NILP (Ffile_readable_p (abs_file))) |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10202 gtk_rc_parse (SDATA (abs_file)); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10203 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10204 UNGCPRO; |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10205 } |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10206 |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10207 XSetErrorHandler (x_error_handler); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10208 XSetIOErrorHandler (x_io_error_quitter); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10209 } |
| 49322 | 10210 } |
| 10211 #else /* not USE_GTK */ | |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10212 #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
|
10213 /* 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
|
10214 errors with X11R5: |
|
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
10215 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
|
10216 on protocol request 18skiloaf. |
|
9829d3c035f2
(x_term_init): Call XtSetLanguageProc only if HAVE_X11XTR6.
Richard M. Stallman <rms@gnu.org>
parents:
11375
diff
changeset
|
10217 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
|
10218 #ifdef HAVE_X11XTR6 |
|
9446
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
10219 XtSetLanguageProc (NULL, NULL, NULL); |
|
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
10220 #endif |
|
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
10221 |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10222 { |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10223 int argc = 0; |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10224 char *argv[3]; |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10225 |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10226 argv[0] = ""; |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10227 argc = 1; |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10228 if (xrm_option) |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10229 { |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10230 argv[argc++] = "-xrm"; |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10231 argv[argc++] = xrm_option; |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10232 } |
|
48169
d2c93bc1faf1
(x_term_init): Use turn_on_atimers, not start_polling and stop_polling.
Richard M. Stallman <rms@gnu.org>
parents:
48145
diff
changeset
|
10233 turn_on_atimers (0); |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10234 dpy = XtOpenDisplay (Xt_app_con, SDATA (display_name), |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10235 resource_name, EMACS_CLASS, |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10236 emacs_options, XtNumber (emacs_options), |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10237 &argc, argv); |
|
48169
d2c93bc1faf1
(x_term_init): Use turn_on_atimers, not start_polling and stop_polling.
Richard M. Stallman <rms@gnu.org>
parents:
48145
diff
changeset
|
10238 turn_on_atimers (1); |
|
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
10239 |
|
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
10240 #ifdef HAVE_X11XTR6 |
|
14963
6ac4f300f9b4
Include locale.h if HAVE_SETLOCALE.
Richard M. Stallman <rms@gnu.org>
parents:
14946
diff
changeset
|
10241 /* I think this is to compensate for XtSetLanguageProc. */ |
|
23115
b992f7bb67d7
(fixup_locale): New function. For now, it resets
Paul Eggert <eggert@twinsun.com>
parents:
23107
diff
changeset
|
10242 fixup_locale (); |
|
12530
c2b2449231c2
[HAVE_X11XTR6]: Include locale.h
Karl Heuer <kwzh@gnu.org>
parents:
12494
diff
changeset
|
10243 #endif |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10244 } |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10245 |
|
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10246 #else /* not USE_X_TOOLKIT */ |
|
9446
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
10247 #ifdef HAVE_X11R5 |
|
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
10248 XSetLocaleModifiers (""); |
|
be58ba7c209d
(x_term_init): Call XtSetLanguageProc or XSetLocaleModifiers.
Richard M. Stallman <rms@gnu.org>
parents:
9340
diff
changeset
|
10249 #endif |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10250 dpy = XOpenDisplay (SDATA (display_name)); |
|
5672
cbc4229c1f90
(x_wm_set_size_hint): Swap southeast and northwest.
Richard M. Stallman <rms@gnu.org>
parents:
5362
diff
changeset
|
10251 #endif /* not USE_X_TOOLKIT */ |
| 49322 | 10252 #endif /* not USE_GTK*/ |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10253 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10254 /* Detect failure. */ |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10255 if (dpy == 0) |
|
11997
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
10256 { |
|
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
10257 UNBLOCK_INPUT; |
|
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
10258 return 0; |
|
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
10259 } |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10260 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10261 /* 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
|
10262 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10263 dpyinfo = (struct x_display_info *) xmalloc (sizeof (struct x_display_info)); |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
10264 bzero (dpyinfo, sizeof *dpyinfo); |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10265 |
| 11015 | 10266 #ifdef MULTI_KBOARD |
| 10267 { | |
| 10268 struct x_display_info *share; | |
| 10269 Lisp_Object tail; | |
| 10270 | |
| 10271 for (share = x_display_list, tail = x_display_name_list; share; | |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
10272 share = share->next, tail = XCDR (tail)) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10273 if (same_x_server (SDATA (XCAR (XCAR (tail))), |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10274 SDATA (display_name))) |
| 11015 | 10275 break; |
| 10276 if (share) | |
| 10277 dpyinfo->kboard = share->kboard; | |
| 10278 else | |
| 10279 { | |
| 10280 dpyinfo->kboard = (KBOARD *) xmalloc (sizeof (KBOARD)); | |
| 10281 init_kboard (dpyinfo->kboard); | |
|
11807
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10282 if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound)) |
|
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10283 { |
|
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10284 char *vendor = ServerVendor (dpy); |
|
28307
1d4a11a5f39d
(x_term_init): Unblock input around call1.
Gerd Moellmann <gerd@gnu.org>
parents:
28281
diff
changeset
|
10285 UNBLOCK_INPUT; |
|
11807
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10286 dpyinfo->kboard->Vsystem_key_alist |
|
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10287 = call1 (Qvendor_specific_keysyms, |
|
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10288 build_string (vendor ? vendor : "")); |
|
28307
1d4a11a5f39d
(x_term_init): Unblock input around call1.
Gerd Moellmann <gerd@gnu.org>
parents:
28281
diff
changeset
|
10289 BLOCK_INPUT; |
|
11807
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10290 } |
|
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10291 |
| 11015 | 10292 dpyinfo->kboard->next_kboard = all_kboards; |
| 10293 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
|
10294 /* 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
|
10295 That would cause problems if a file loaded on startup tries to |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10296 prompt in the mini-buffer. */ |
|
11544
cc965273a769
(x_term_init): If the previous kboard was the dummy one,
Karl Heuer <kwzh@gnu.org>
parents:
11536
diff
changeset
|
10297 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
|
10298 current_kboard = dpyinfo->kboard; |
| 11015 | 10299 } |
| 10300 dpyinfo->kboard->reference_count++; | |
| 10301 } | |
|
10652
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
10302 #endif |
|
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
10303 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10304 /* 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
|
10305 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
|
10306 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
|
10307 |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10308 /* Put it on x_display_name_list as well, to keep them parallel. */ |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10309 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
|
10310 x_display_name_list); |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
10311 dpyinfo->name_list_element = XCAR (x_display_name_list); |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10312 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10313 dpyinfo->display = dpy; |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10314 |
| 286 | 10315 #if 0 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10316 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
|
10317 #endif /* ! 0 */ |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10318 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10319 dpyinfo->x_id_name |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10320 = (char *) xmalloc (SBYTES (Vinvocation_name) |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10321 + SBYTES (Vsystem_name) |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10322 + 2); |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10323 sprintf (dpyinfo->x_id_name, "%s@%s", |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10324 SDATA (Vinvocation_name), SDATA (Vsystem_name)); |
|
1279
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
10325 |
|
74ae34a80f94
* xterm.c (x_meta_mod_mask): New variable, indicating which X
Jim Blandy <jimb@redhat.com>
parents:
1127
diff
changeset
|
10326 /* 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
|
10327 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
|
10328 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
10329 /* Get the scroll bar cursor. */ |
|
53069
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10330 #ifdef USE_GTK |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10331 /* We must create a GTK cursor, it is required for GTK widgets. */ |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10332 dpyinfo->xg_cursor = xg_create_default_cursor (dpyinfo->display); |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10333 #endif /* USE_GTK */ |
|
1218a42792ea
Implement multiple display handling for GTK.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
53061
diff
changeset
|
10334 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10335 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
|
10336 = 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
|
10337 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10338 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
|
10339 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
|
10340 #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
|
10341 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
|
10342 #else |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10343 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
|
10344 #endif |
|
11162
95b70c82ec51
(x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents:
11122
diff
changeset
|
10345 /* 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
|
10346 all versions. */ |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10347 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
|
10348 |
|
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10349 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
|
10350 DefaultScreen (dpyinfo->display)); |
|
27991
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10351 select_visual (dpyinfo); |
|
27985
4ba445af210b
(x_term_init): Set Colormap member of x_display_info
Gerd Moellmann <gerd@gnu.org>
parents:
27974
diff
changeset
|
10352 dpyinfo->cmap = DefaultColormapOfScreen (dpyinfo->screen); |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10353 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
|
10354 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
|
10355 dpyinfo->root_window = RootWindowOfScreen (dpyinfo->screen); |
|
52298
1a4bd2bec861
Create and initialize a client leader window so session management
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52258
diff
changeset
|
10356 dpyinfo->client_leader_window = 0; |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10357 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
|
10358 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
|
10359 dpyinfo->icon_bitmap_id = -1; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10360 dpyinfo->font_table = NULL; |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10361 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
|
10362 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
|
10363 dpyinfo->bitmaps = 0; |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10364 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
|
10365 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
|
10366 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
|
10367 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
|
10368 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
|
10369 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
|
10370 dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10371 dpyinfo->mouse_face_face_id = DEFAULT_FACE_ID; |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10372 dpyinfo->mouse_face_window = Qnil; |
|
36587
d9bb01d5dbbb
(note_mouse_highlight): Call mouse_face_overlay_overlaps
Gerd Moellmann <gerd@gnu.org>
parents:
36555
diff
changeset
|
10373 dpyinfo->mouse_face_overlay = Qnil; |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10374 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
|
10375 dpyinfo->mouse_face_defer = 0; |
|
43369
493438ba5e2c
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43343
diff
changeset
|
10376 dpyinfo->mouse_face_hidden = 0; |
|
11536
c4d3218acd7e
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Karl Heuer <kwzh@gnu.org>
parents:
11436
diff
changeset
|
10377 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
|
10378 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
|
10379 dpyinfo->x_highlight_frame = 0; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10380 dpyinfo->image_cache = make_image_cache (); |
|
52752
751a01f97570
Make (modify-frame-parameters nil '((top . 0))) work for all types
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52730
diff
changeset
|
10381 dpyinfo->wm_type = X_WMTYPE_UNKNOWN; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10382 |
|
52387
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10383 /* See if we can construct pixel values from RGB values. */ |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10384 dpyinfo->red_bits = dpyinfo->blue_bits = dpyinfo->green_bits = 0; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10385 dpyinfo->red_offset = dpyinfo->blue_offset = dpyinfo->green_offset = 0; |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10386 |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10387 if (dpyinfo->visual->class == TrueColor) |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10388 { |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10389 get_bits_and_offset (dpyinfo->visual->red_mask, |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10390 &dpyinfo->red_bits, &dpyinfo->red_offset); |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10391 get_bits_and_offset (dpyinfo->visual->blue_mask, |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10392 &dpyinfo->blue_bits, &dpyinfo->blue_offset); |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10393 get_bits_and_offset (dpyinfo->visual->green_mask, |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10394 &dpyinfo->green_bits, &dpyinfo->green_offset); |
|
2415f47f227a
Fix pixel calculation for TrueVisuals.
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52298
diff
changeset
|
10395 } |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10396 |
|
27985
4ba445af210b
(x_term_init): Set Colormap member of x_display_info
Gerd Moellmann <gerd@gnu.org>
parents:
27974
diff
changeset
|
10397 /* See if a private colormap is requested. */ |
|
27991
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10398 if (dpyinfo->visual == DefaultVisualOfScreen (dpyinfo->screen)) |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10399 { |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10400 if (dpyinfo->visual->class == PseudoColor) |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10401 { |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10402 Lisp_Object value; |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10403 value = display_x_get_resource (dpyinfo, |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10404 build_string ("privateColormap"), |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10405 build_string ("PrivateColormap"), |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10406 Qnil, Qnil); |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10407 if (STRINGP (value) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10408 && (!strcmp (SDATA (value), "true") |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10409 || !strcmp (SDATA (value), "on"))) |
|
27991
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10410 dpyinfo->cmap = XCopyColormapAndFree (dpyinfo->display, dpyinfo->cmap); |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10411 } |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10412 } |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10413 else |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10414 dpyinfo->cmap = XCreateColormap (dpyinfo->display, dpyinfo->root_window, |
|
cf10555b8ce0
(x_term_init): Create a colormap if not using the
Gerd Moellmann <gerd@gnu.org>
parents:
27985
diff
changeset
|
10415 dpyinfo->visual, AllocNone); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10416 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10417 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10418 int screen_number = XScreenNumberOfScreen (dpyinfo->screen); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10419 double pixels = DisplayHeight (dpyinfo->display, screen_number); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10420 double mm = DisplayHeightMM (dpyinfo->display, screen_number); |
|
57144
1b899494bbe2
(x_term_init): Work around a bug in some X servers.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56782
diff
changeset
|
10421 /* Mac OS X 10.3's Xserver sometimes reports 0.0mm. */ |
|
1b899494bbe2
(x_term_init): Work around a bug in some X servers.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56782
diff
changeset
|
10422 dpyinfo->resy = (mm < 1) ? 100 : pixels * 25.4 / mm; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10423 pixels = DisplayWidth (dpyinfo->display, screen_number); |
|
57144
1b899494bbe2
(x_term_init): Work around a bug in some X servers.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56782
diff
changeset
|
10424 /* Mac OS X 10.3's Xserver sometimes reports 0.0mm. */ |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10425 mm = DisplayWidthMM (dpyinfo->display, screen_number); |
|
57144
1b899494bbe2
(x_term_init): Work around a bug in some X servers.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56782
diff
changeset
|
10426 dpyinfo->resx = (mm < 1) ? 100 : pixels * 25.4 / mm; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10427 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10428 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10429 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
|
10430 = 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
|
10431 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
|
10432 = 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
|
10433 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
|
10434 = 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
|
10435 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
|
10436 = 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
|
10437 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
|
10438 = 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
|
10439 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
|
10440 = 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
|
10441 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
|
10442 = XInternAtom (dpyinfo->display, "WM_MOVED", False); |
|
52298
1a4bd2bec861
Create and initialize a client leader window so session management
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52258
diff
changeset
|
10443 dpyinfo->Xatom_wm_client_leader |
|
1a4bd2bec861
Create and initialize a client leader window so session management
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52258
diff
changeset
|
10444 = XInternAtom (dpyinfo->display, "WM_CLIENT_LEADER", False); |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10445 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
|
10446 = 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
|
10447 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
|
10448 = 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
|
10449 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
|
10450 = 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
|
10451 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
|
10452 = XInternAtom (dpyinfo->display, "TEXT", False); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10453 dpyinfo->Xatom_COMPOUND_TEXT |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10454 = XInternAtom (dpyinfo->display, "COMPOUND_TEXT", False); |
|
46882
9c2b3f9ec15a
(x_term_init): Initialize dpyinfo->Xatom_UTF8_STRING.
Kenichi Handa <handa@m17n.org>
parents:
46814
diff
changeset
|
10455 dpyinfo->Xatom_UTF8_STRING |
|
9c2b3f9ec15a
(x_term_init): Initialize dpyinfo->Xatom_UTF8_STRING.
Kenichi Handa <handa@m17n.org>
parents:
46814
diff
changeset
|
10456 = XInternAtom (dpyinfo->display, "UTF8_STRING", False); |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10457 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
|
10458 = 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
|
10459 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
|
10460 = 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
|
10461 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
|
10462 = 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
|
10463 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
|
10464 = 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
|
10465 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
|
10466 = 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
|
10467 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
|
10468 = 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
|
10469 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
|
10470 = XInternAtom (dpyinfo->display, "ATOM_PAIR", False); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10471 /* For properties of font. */ |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10472 dpyinfo->Xatom_PIXEL_SIZE |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10473 = XInternAtom (dpyinfo->display, "PIXEL_SIZE", False); |
|
59206
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
10474 dpyinfo->Xatom_AVERAGE_WIDTH |
|
77ba45776c58
(x_new_font): Set FRAME_COLUMN_WIDTH to
Kenichi Handa <handa@m17n.org>
parents:
58985
diff
changeset
|
10475 = XInternAtom (dpyinfo->display, "AVERAGE_WIDTH", False); |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10476 dpyinfo->Xatom_MULE_BASELINE_OFFSET |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10477 = XInternAtom (dpyinfo->display, "_MULE_BASELINE_OFFSET", False); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10478 dpyinfo->Xatom_MULE_RELATIVE_COMPOSE |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10479 = XInternAtom (dpyinfo->display, "_MULE_RELATIVE_COMPOSE", False); |
|
17103
7cde34a6424e
(dumpglyphs): Pay attention to characters registered in
Kenichi Handa <handa@m17n.org>
parents:
17050
diff
changeset
|
10480 dpyinfo->Xatom_MULE_DEFAULT_ASCENT |
|
7cde34a6424e
(dumpglyphs): Pay attention to characters registered in
Kenichi Handa <handa@m17n.org>
parents:
17050
diff
changeset
|
10481 = XInternAtom (dpyinfo->display, "_MULE_DEFAULT_ASCENT", False); |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10482 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10483 /* Ghostscript support. */ |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10484 dpyinfo->Xatom_PAGE = XInternAtom (dpyinfo->display, "PAGE", False); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10485 dpyinfo->Xatom_DONE = XInternAtom (dpyinfo->display, "DONE", False); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10486 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10487 dpyinfo->Xatom_Scrollbar = XInternAtom (dpyinfo->display, "SCROLLBAR", |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10488 False); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10489 |
|
11162
95b70c82ec51
(x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents:
11122
diff
changeset
|
10490 dpyinfo->cut_buffers_initialized = 0; |
|
95b70c82ec51
(x_term_init): Initialize cut_buffers_initialized.
Karl Heuer <kwzh@gnu.org>
parents:
11122
diff
changeset
|
10491 |
|
9654
41681efe1086
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
Richard M. Stallman <rms@gnu.org>
parents:
9577
diff
changeset
|
10492 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
|
10493 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
|
10494 |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10495 { |
|
18705
c4f2eab8e736
(x_term_init): Don't use initializer for null_bits.
Richard M. Stallman <rms@gnu.org>
parents:
18646
diff
changeset
|
10496 char null_bits[1]; |
|
c4f2eab8e736
(x_term_init): Don't use initializer for null_bits.
Richard M. Stallman <rms@gnu.org>
parents:
18646
diff
changeset
|
10497 |
|
c4f2eab8e736
(x_term_init): Don't use initializer for null_bits.
Richard M. Stallman <rms@gnu.org>
parents:
18646
diff
changeset
|
10498 null_bits[0] = 0x00; |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10499 |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10500 dpyinfo->null_pixel |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10501 = XCreatePixmapFromBitmapData (dpyinfo->display, dpyinfo->root_window, |
|
17050
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10502 null_bits, 1, 1, (long) 0, (long) 0, |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10503 1); |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10504 } |
|
1e5fa2dc98cf
Include charset.h, ccl.h, and fontset.h.
Karl Heuer <kwzh@gnu.org>
parents:
16898
diff
changeset
|
10505 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10506 { |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10507 extern int gray_bitmap_width, gray_bitmap_height; |
|
34511
1f69c833e2af
(x_term_init): Declare gray_bitmap_bits as `extern
Gerd Moellmann <gerd@gnu.org>
parents:
34449
diff
changeset
|
10508 extern char *gray_bitmap_bits; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10509 dpyinfo->gray |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10510 = XCreatePixmapFromBitmapData (dpyinfo->display, dpyinfo->root_window, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10511 gray_bitmap_bits, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10512 gray_bitmap_width, gray_bitmap_height, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10513 (unsigned long) 1, (unsigned long) 0, 1); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10514 } |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10515 |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
10516 #ifdef HAVE_X_I18N |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
10517 xim_initialize (dpyinfo, resource_name); |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
10518 #endif |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10519 |
| 9572 | 10520 #ifdef subprocesses |
| 10521 /* 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
|
10522 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
|
10523 add_keyboard_wait_descriptor (connection); |
| 9572 | 10524 #endif |
|
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
10525 |
|
4147
c6657758fb6f
* xterm.c (x_term_init): Adjust message printed when we can't
Jim Blandy <jimb@redhat.com>
parents:
3951
diff
changeset
|
10526 #ifndef F_SETOWN_BUG |
| 286 | 10527 #ifdef F_SETOWN |
| 10528 #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
|
10529 /* 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
|
10530 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
|
10531 #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
|
10532 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
|
10533 #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
|
10534 #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
|
10535 #endif /* F_SETOWN_BUG */ |
| 286 | 10536 |
| 10537 #ifdef SIGIO | |
|
11994
b4dd8ca308dd
(x_term_init): Call init_sigio only if interrupt_input.
Karl Heuer <kwzh@gnu.org>
parents:
11988
diff
changeset
|
10538 if (interrupt_input) |
|
b4dd8ca308dd
(x_term_init): Call init_sigio only if interrupt_input.
Karl Heuer <kwzh@gnu.org>
parents:
11988
diff
changeset
|
10539 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
|
10540 #endif /* ! defined (SIGIO) */ |
| 286 | 10541 |
|
15904
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10542 #ifdef USE_LUCID |
|
19021
6f150e46a5fd
(x_term_init) [! HAVE_X11R5]: Don't try to use XtCvtStringToFont.
Richard M. Stallman <rms@gnu.org>
parents:
18996
diff
changeset
|
10543 #ifdef HAVE_X11R5 /* It seems X11R4 lacks XtCvtStringToFont, and XPointer. */ |
|
15904
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10544 /* Make sure that we have a valid font for dialog boxes |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10545 so that Xt does not crash. */ |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10546 { |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10547 Display *dpy = dpyinfo->display; |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10548 XrmValue d, fr, to; |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10549 Font font; |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
10550 int count; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10551 |
|
15904
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10552 d.addr = (XPointer)&dpy; |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10553 d.size = sizeof (Display *); |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10554 fr.addr = XtDefaultFont; |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10555 fr.size = sizeof (XtDefaultFont); |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10556 to.size = sizeof (Font *); |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10557 to.addr = (XPointer)&font; |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
10558 count = x_catch_errors (dpy); |
|
15904
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10559 if (!XtCallConverter (dpy, XtCvtStringToFont, &d, 1, &fr, &to, NULL)) |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10560 abort (); |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10561 if (x_had_errors_p (dpy) || !XQueryFont (dpy, font)) |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10562 XrmPutLineResource (&xrdb, "Emacs.dialog.*.font: 9x15"); |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
10563 x_uncatch_errors (dpy, count); |
|
15904
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10564 } |
|
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10565 #endif |
|
19021
6f150e46a5fd
(x_term_init) [! HAVE_X11R5]: Don't try to use XtCvtStringToFont.
Richard M. Stallman <rms@gnu.org>
parents:
18996
diff
changeset
|
10566 #endif |
|
15904
a31cfab57f69
(x_term_init): If the default Xt font does not exist on
Richard M. Stallman <rms@gnu.org>
parents:
15808
diff
changeset
|
10567 |
| 28139 | 10568 /* See if we should run in synchronous mode. This is useful |
| 10569 for debugging X code. */ | |
| 10570 { | |
| 10571 Lisp_Object value; | |
| 10572 value = display_x_get_resource (dpyinfo, | |
| 10573 build_string ("synchronous"), | |
| 10574 build_string ("Synchronous"), | |
| 10575 Qnil, Qnil); | |
| 10576 if (STRINGP (value) | |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10577 && (!strcmp (SDATA (value), "true") |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
10578 || !strcmp (SDATA (value), "on"))) |
| 28139 | 10579 XSynchronize (dpyinfo->display, True); |
| 10580 } | |
|
51897
535ddb6daa07
(x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, and use the Gtk+
Juanma Barranquero <lekktu@gmail.com>
parents:
51825
diff
changeset
|
10581 |
| 51129 | 10582 { |
| 10583 Lisp_Object value; | |
| 10584 value = display_x_get_resource (dpyinfo, | |
| 10585 build_string ("useXIM"), | |
| 10586 build_string ("UseXIM"), | |
| 10587 Qnil, Qnil); | |
|
51825
7003a80a49ec
(x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM.
Kim F. Storm <storm@cua.dk>
parents:
51823
diff
changeset
|
10588 #ifdef USE_XIM |
| 51129 | 10589 if (STRINGP (value) |
| 10590 && (!strcmp (XSTRING (value)->data, "false") | |
| 10591 || !strcmp (XSTRING (value)->data, "off"))) | |
| 10592 use_xim = 0; | |
|
51825
7003a80a49ec
(x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM.
Kim F. Storm <storm@cua.dk>
parents:
51823
diff
changeset
|
10593 #else |
|
7003a80a49ec
(x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM.
Kim F. Storm <storm@cua.dk>
parents:
51823
diff
changeset
|
10594 if (STRINGP (value) |
|
7003a80a49ec
(x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM.
Kim F. Storm <storm@cua.dk>
parents:
51823
diff
changeset
|
10595 && (!strcmp (XSTRING (value)->data, "true") |
|
7003a80a49ec
(x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM.
Kim F. Storm <storm@cua.dk>
parents:
51823
diff
changeset
|
10596 || !strcmp (XSTRING (value)->data, "on"))) |
|
7003a80a49ec
(x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM.
Kim F. Storm <storm@cua.dk>
parents:
51823
diff
changeset
|
10597 use_xim = 1; |
|
7003a80a49ec
(x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM.
Kim F. Storm <storm@cua.dk>
parents:
51823
diff
changeset
|
10598 #endif |
| 51129 | 10599 } |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10600 |
|
52298
1a4bd2bec861
Create and initialize a client leader window so session management
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52258
diff
changeset
|
10601 #ifdef HAVE_X_SM |
|
1a4bd2bec861
Create and initialize a client leader window so session management
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52258
diff
changeset
|
10602 /* Only do this for the first display. */ |
|
1a4bd2bec861
Create and initialize a client leader window so session management
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52258
diff
changeset
|
10603 if (x_initialized == 1) |
|
1a4bd2bec861
Create and initialize a client leader window so session management
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52258
diff
changeset
|
10604 x_session_initialize (dpyinfo); |
|
1a4bd2bec861
Create and initialize a client leader window so session management
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52258
diff
changeset
|
10605 #endif |
|
1a4bd2bec861
Create and initialize a client leader window so session management
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52258
diff
changeset
|
10606 |
|
11997
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
10607 UNBLOCK_INPUT; |
|
50c7c05fc301
(x_term_init): Block input during this function.
Karl Heuer <kwzh@gnu.org>
parents:
11994
diff
changeset
|
10608 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10609 return dpyinfo; |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10610 } |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10611 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10612 /* 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
|
10613 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
|
10614 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10615 void |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10616 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
|
10617 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
|
10618 { |
|
52753
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10619 int i; |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10620 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10621 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
|
10622 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10623 /* 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
|
10624 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
|
10625 if (! NILP (x_display_name_list) |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
10626 && EQ (XCAR (x_display_name_list), dpyinfo->name_list_element)) |
|
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
10627 x_display_name_list = XCDR (x_display_name_list); |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10628 else |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10629 { |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10630 Lisp_Object tail; |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10631 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10632 tail = x_display_name_list; |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
10633 while (CONSP (tail) && CONSP (XCDR (tail))) |
|
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
10634 { |
|
27428
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10635 if (EQ (XCAR (XCDR (tail)), dpyinfo->name_list_element)) |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10636 { |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39950
diff
changeset
|
10637 XSETCDR (tail, XCDR (XCDR (tail))); |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10638 break; |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10639 } |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25633
diff
changeset
|
10640 tail = XCDR (tail); |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10641 } |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10642 } |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10643 |
|
27524
67501e6e8b34
(x_delete_display): Update next_noop_dpyinfo to ensure
Gerd Moellmann <gerd@gnu.org>
parents:
27500
diff
changeset
|
10644 if (next_noop_dpyinfo == dpyinfo) |
|
67501e6e8b34
(x_delete_display): Update next_noop_dpyinfo to ensure
Gerd Moellmann <gerd@gnu.org>
parents:
27500
diff
changeset
|
10645 next_noop_dpyinfo = dpyinfo->next; |
|
67501e6e8b34
(x_delete_display): Update next_noop_dpyinfo to ensure
Gerd Moellmann <gerd@gnu.org>
parents:
27500
diff
changeset
|
10646 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10647 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
|
10648 x_display_list = dpyinfo->next; |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10649 else |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10650 { |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10651 struct x_display_info *tail; |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10652 |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10653 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
|
10654 if (tail->next == dpyinfo) |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10655 tail->next = tail->next->next; |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10656 } |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10657 |
|
12771
6f07c79d9a05
(x_delete_display) [AIX]: Don't call XRmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
12750
diff
changeset
|
10658 #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
|
10659 #ifndef AIX /* On AIX, XCloseDisplay calls this. */ |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10660 XrmDestroyDatabase (dpyinfo->xrdb); |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10661 #endif |
|
12771
6f07c79d9a05
(x_delete_display) [AIX]: Don't call XRmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
12750
diff
changeset
|
10662 #endif |
| 11015 | 10663 #ifdef MULTI_KBOARD |
| 10664 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
|
10665 delete_kboard (dpyinfo->kboard); |
|
10652
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
10666 #endif |
|
27500
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
10667 #ifdef HAVE_X_I18N |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
10668 if (dpyinfo->xim) |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
10669 xim_close_dpy (dpyinfo); |
|
d33b4becc3ca
(x_display_cursor): Set XIC pre-edit area only if window
Gerd Moellmann <gerd@gnu.org>
parents:
27428
diff
changeset
|
10670 #endif |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10671 |
|
52753
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10672 /* Free the font names in the font table. */ |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10673 for (i = 0; i < dpyinfo->n_fonts; i++) |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10674 if (dpyinfo->font_table[i].name) |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10675 { |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10676 if (dpyinfo->font_table[i].name != dpyinfo->font_table[i].full_name) |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10677 xfree (dpyinfo->font_table[i].full_name); |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10678 xfree (dpyinfo->font_table[i].name); |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10679 } |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10680 |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10681 if (dpyinfo->font_table->font_encoder) |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10682 xfree (dpyinfo->font_table->font_encoder); |
|
551e8ebadb62
Fix memory leaks (from YAMAMOTO Mitsuharu)
Jan Dj?rv <jan.h.d@swipnet.se>
parents:
52752
diff
changeset
|
10683 |
|
10652
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
10684 xfree (dpyinfo->font_table); |
|
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
10685 xfree (dpyinfo->x_id_name); |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
10686 xfree (dpyinfo->color_cells); |
|
10652
f6a41cb94a75
[MULTI_PERDISPLAY] (x_term_init): Initialize perdisplay.
Karl Heuer <kwzh@gnu.org>
parents:
10634
diff
changeset
|
10687 xfree (dpyinfo); |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10688 } |
|
32607
00d2748a616a
(x_color_cells, x_query_colors, x_query_color): New
Gerd Moellmann <gerd@gnu.org>
parents:
32513
diff
changeset
|
10689 |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10690 #ifdef USE_X_TOOLKIT |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10691 |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10692 /* Atimer callback function for TIMER. Called every 0.1s to process |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10693 Xt timeouts, if needed. We must avoid calling XtAppPending as |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10694 much as possible because that function does an implicit XFlush |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10695 that slows us down. */ |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10696 |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10697 static void |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10698 x_process_timeouts (timer) |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10699 struct atimer *timer; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10700 { |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10701 if (toolkit_scroll_bar_interaction || popup_activated ()) |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10702 { |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10703 BLOCK_INPUT; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10704 while (XtAppPending (Xt_app_con) & XtIMTimer) |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10705 XtAppProcessEvent (Xt_app_con, XtIMTimer); |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10706 UNBLOCK_INPUT; |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10707 } |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10708 } |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10709 |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10710 #endif /* USE_X_TOOLKIT */ |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10711 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10712 |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10713 /* 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
|
10714 |
|
50371
45e825260791
Remove unnecessary extern declarations.
Kim F. Storm <storm@cua.dk>
parents:
50327
diff
changeset
|
10715 extern frame_parm_handler x_frame_parm_handlers[]; |
|
45e825260791
Remove unnecessary extern declarations.
Kim F. Storm <storm@cua.dk>
parents:
50327
diff
changeset
|
10716 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10717 static struct redisplay_interface x_redisplay_interface = |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10718 { |
|
50371
45e825260791
Remove unnecessary extern declarations.
Kim F. Storm <storm@cua.dk>
parents:
50327
diff
changeset
|
10719 x_frame_parm_handlers, |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10720 x_produce_glyphs, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10721 x_write_glyphs, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10722 x_insert_glyphs, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10723 x_clear_end_of_line, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10724 x_scroll_run, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10725 x_after_update_window_line, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10726 x_update_window_begin, |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10727 x_update_window_end, |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10728 x_cursor_to, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10729 x_flush, |
|
57454
926582f79d3b
(x_redisplay_interface): Fix flush_display_optional.
Kim F. Storm <storm@cua.dk>
parents:
57373
diff
changeset
|
10730 #ifdef XFlush |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10731 x_flush, |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10732 #else |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10733 0, /* flush_display_optional */ |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10734 #endif |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10735 x_clear_window_mouse_face, |
|
25189
710445260df6
(x_draw_phys_cursor_glyph): Redraw overlaps.
Gerd Moellmann <gerd@gnu.org>
parents:
25150
diff
changeset
|
10736 x_get_glyph_overhangs, |
| 50097 | 10737 x_fix_overlapping_area, |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
10738 x_draw_fringe_bitmap, |
|
53888
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
10739 0, /* define_fringe_bitmap */ |
|
57b27e42bf9e
(x_draw_fringe_bitmap): Handle overlayed fringe bitmaps.
Kim F. Storm <storm@cua.dk>
parents:
53785
diff
changeset
|
10740 0, /* destroy_fringe_bitmap */ |
|
50151
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
10741 x_per_char_metric, |
|
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
10742 x_encode_char, |
|
0e12b5894d99
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50130
diff
changeset
|
10743 x_compute_glyph_string_overhangs, |
|
50237
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10744 x_draw_glyph_string, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10745 x_define_frame_cursor, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10746 x_clear_frame_area, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10747 x_draw_window_cursor, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10748 x_draw_vertical_window_border, |
|
160bd7db88a1
* xterm.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50177
diff
changeset
|
10749 x_shift_glyphs_for_insert |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10750 }; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10751 |
| 21514 | 10752 void |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10753 x_initialize () |
|
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10754 { |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10755 rif = &x_redisplay_interface; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10756 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10757 clear_frame_hook = x_clear_frame; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10758 ins_del_lines_hook = x_ins_del_lines; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10759 delete_glyphs_hook = x_delete_glyphs; |
| 286 | 10760 ring_bell_hook = XTring_bell; |
| 10761 reset_terminal_modes_hook = XTreset_terminal_modes; | |
| 10762 set_terminal_modes_hook = XTset_terminal_modes; | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10763 update_begin_hook = x_update_begin; |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10764 update_end_hook = x_update_end; |
| 286 | 10765 set_terminal_window_hook = XTset_terminal_window; |
| 10766 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
|
10767 frame_up_to_date_hook = XTframe_up_to_date; |
|
1720
4f5e3ac5d822
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1658
diff
changeset
|
10768 mouse_position_hook = XTmouse_position; |
| 771 | 10769 frame_rehighlight_hook = XTframe_rehighlight; |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1810
diff
changeset
|
10770 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
|
10771 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
|
10772 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
|
10773 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
|
10774 judge_scroll_bars_hook = XTjudge_scroll_bars; |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
10775 |
| 771 | 10776 scroll_region_ok = 1; /* we'll scroll partial frames */ |
|
35393
2470cdee5ed8
(x_initialize): Set char_ins_del_ok to 1.
Gerd Moellmann <gerd@gnu.org>
parents:
35367
diff
changeset
|
10777 char_ins_del_ok = 1; |
| 286 | 10778 line_ins_del_ok = 1; /* we'll just blt 'em */ |
| 10779 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
|
10780 memory_below_frame = 0; /* we don't remember what scrolls |
| 286 | 10781 off the bottom */ |
| 10782 baud_rate = 19200; | |
| 10783 | |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10784 x_noop_count = 0; |
|
25544
693ca9ba497a
Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents:
25541
diff
changeset
|
10785 last_tool_bar_item = -1; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10786 any_help_event_p = 0; |
|
54651
ee25175db902
(x_initialize): Initialize ignore_next_mouse_click_timeout.
Kim F. Storm <storm@cua.dk>
parents:
54650
diff
changeset
|
10787 ignore_next_mouse_click_timeout = 0; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10788 |
|
54173
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
10789 #ifdef USE_GTK |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
10790 current_count = -1; |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
10791 #endif |
|
03cb01738926
(x_focus_changed, x_detect_focus_change): Remove
Kim F. Storm <storm@cua.dk>
parents:
53933
diff
changeset
|
10792 |
|
4476
e7de1b007447
(x_term_init): Set the hooks before we call Fset_input_mode.
Richard M. Stallman <rms@gnu.org>
parents:
4304
diff
changeset
|
10793 /* 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
|
10794 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
|
10795 |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10796 #ifdef USE_X_TOOLKIT |
|
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10797 XtToolkitInitialize (); |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
10798 |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10799 Xt_app_con = XtCreateApplicationContext (); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10800 |
|
37143
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
10801 /* Register a converter from strings to pixels, which uses |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
10802 Emacs' color allocation infrastructure. */ |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
10803 XtAppSetTypeConverter (Xt_app_con, |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
10804 XtRString, XtRPixel, cvt_string_to_pixel, |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
10805 cvt_string_to_pixel_args, |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
10806 XtNumber (cvt_string_to_pixel_args), |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
10807 XtCacheByDisplay, cvt_pixel_dtor); |
|
187f754d89cc
(x_alloc_nearest_color_1): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37033
diff
changeset
|
10808 |
|
12494
bfbe2490dbf0
(x_initialize) [USE_X_TOOLKIT]: Set fallback resources.
Richard M. Stallman <rms@gnu.org>
parents:
12431
diff
changeset
|
10809 XtAppSetFallbackResources (Xt_app_con, Xt_default_resources); |
|
27428
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10810 |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10811 /* Install an asynchronous timer that processes Xt timeout events |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10812 every 0.1s. This is necessary because some widget sets use |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10813 timeouts internally, for example the LessTif menu bar, or the |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10814 Xaw3d scroll bar. When Xt timouts aren't processed, these |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10815 widgets don't behave normally. */ |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10816 { |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10817 EMACS_TIME interval; |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10818 EMACS_SET_SECS_USECS (interval, 0, 100000); |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10819 start_atimer (ATIMER_CONTINUOUS, interval, x_process_timeouts, 0); |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10820 } |
|
c8b20597f0fd
(toplevel): Include atimer.h.
Gerd Moellmann <gerd@gnu.org>
parents:
27040
diff
changeset
|
10821 #endif |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10822 |
|
34066
2482c17f546e
Test USE_TOOLKIT_SCROLL_BARS everywhere with #ifdef and
Gerd Moellmann <gerd@gnu.org>
parents:
34030
diff
changeset
|
10823 #ifdef USE_TOOLKIT_SCROLL_BARS |
| 49322 | 10824 #ifndef USE_GTK |
|
26789
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
10825 xaw3d_arrow_scroll = False; |
|
03a6016a38bf
(#includes): Allow compilation with only Xaw.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26633
diff
changeset
|
10826 xaw3d_pick_top = True; |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10827 #endif |
| 49322 | 10828 #endif |
|
9741
bd9d06e542c6
(x_delete_display): Call XrmDestroyDatabase.
Richard M. Stallman <rms@gnu.org>
parents:
9704
diff
changeset
|
10829 |
|
9537
f025140f7ff7
(stuffline, scraplines): Functions deleted.
Karl Heuer <kwzh@gnu.org>
parents:
9526
diff
changeset
|
10830 /* 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
|
10831 original error handler. */ |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
10832 XSetErrorHandler (x_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
|
10833 XSetIOErrorHandler (x_io_error_quitter); |
| 286 | 10834 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10835 /* Disable Window Change signals; they are handled by X events. */ |
| 286 | 10836 #ifdef SIGWINCH |
| 10837 signal (SIGWINCH, SIG_DFL); | |
|
44763
f6ac4d8b01cd
Fix misleading comment after #endif.
Pavel Jan?k <Pavel@Janik.cz>
parents:
44708
diff
changeset
|
10838 #endif /* SIGWINCH */ |
|
1052
b8defcaf1b61
* xterm.c (x_make_frame_invisible): Don't forget to check the
Jim Blandy <jimb@redhat.com>
parents:
1020
diff
changeset
|
10839 |
|
10743
6977bff3ff38
(x_display_bar_cursor): Use frame's cursor_width.
Richard M. Stallman <rms@gnu.org>
parents:
10652
diff
changeset
|
10840 signal (SIGPIPE, x_connection_signal); |
| 286 | 10841 } |
| 395 | 10842 |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10843 |
| 395 | 10844 void |
| 10845 syms_of_xterm () | |
| 10846 { | |
|
17607
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
10847 staticpro (&x_error_message_string); |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
10848 x_error_message_string = Qnil; |
|
251e103f2d53
(XTmouse_position, x_term_init):
Richard M. Stallman <rms@gnu.org>
parents:
17575
diff
changeset
|
10849 |
|
9704
39b34bbe59c9
(x_catch_errors, x_check_errors, x_had_errors_p)
Richard M. Stallman <rms@gnu.org>
parents:
9654
diff
changeset
|
10850 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
|
10851 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
|
10852 |
|
1993
645d96bd3daf
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1935
diff
changeset
|
10853 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
|
10854 last_mouse_scroll_bar = Qnil; |
|
11807
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10855 |
|
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10856 staticpro (&Qvendor_specific_keysyms); |
|
73fb6570f718
(Qvendor_specific_keysyms): New var.
Karl Heuer <kwzh@gnu.org>
parents:
11610
diff
changeset
|
10857 Qvendor_specific_keysyms = intern ("vendor-specific-keysyms"); |
|
15803
f214673e68a8
(XTread_socket): Pass keys in menu bar to toolkit alone
Richard M. Stallman <rms@gnu.org>
parents:
15794
diff
changeset
|
10858 |
|
44626
404f74d6dc4a
(Qlatin_1, Qutf_8): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44533
diff
changeset
|
10859 staticpro (&Qutf_8); |
|
404f74d6dc4a
(Qlatin_1, Qutf_8): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44533
diff
changeset
|
10860 Qutf_8 = intern ("utf-8"); |
|
404f74d6dc4a
(Qlatin_1, Qutf_8): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44533
diff
changeset
|
10861 staticpro (&Qlatin_1); |
|
404f74d6dc4a
(Qlatin_1, Qutf_8): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44533
diff
changeset
|
10862 Qlatin_1 = intern ("latin-1"); |
|
404f74d6dc4a
(Qlatin_1, Qutf_8): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
44533
diff
changeset
|
10863 |
|
15803
f214673e68a8
(XTread_socket): Pass keys in menu bar to toolkit alone
Richard M. Stallman <rms@gnu.org>
parents:
15794
diff
changeset
|
10864 staticpro (&last_mouse_press_frame); |
|
f214673e68a8
(XTread_socket): Pass keys in menu bar to toolkit alone
Richard M. Stallman <rms@gnu.org>
parents:
15794
diff
changeset
|
10865 last_mouse_press_frame = Qnil; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10866 |
|
37153
3799cab1815b
(x_use_underline_position_properties): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37143
diff
changeset
|
10867 DEFVAR_BOOL ("x-use-underline-position-properties", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
10868 &x_use_underline_position_properties, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
10869 doc: /* *Non-nil means make use of UNDERLINE_POSITION font properties. |
| 42206 | 10870 nil means ignore them. If you encounter fonts with bogus |
|
39914
91951fb5b9e5
Put doc strings in comments.
Gerd Moellmann <gerd@gnu.org>
parents:
39821
diff
changeset
|
10871 UNDERLINE_POSITION font properties, for example 7x13 on XFree prior |
|
91951fb5b9e5
Put doc strings in comments.
Gerd Moellmann <gerd@gnu.org>
parents:
39821
diff
changeset
|
10872 to 4.1, set this to nil. */); |
|
37153
3799cab1815b
(x_use_underline_position_properties): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37143
diff
changeset
|
10873 x_use_underline_position_properties = 1; |
|
3799cab1815b
(x_use_underline_position_properties): New variable.
Gerd Moellmann <gerd@gnu.org>
parents:
37143
diff
changeset
|
10874 |
|
54650
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10875 DEFVAR_BOOL ("x-mouse-click-focus-ignore-position", |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10876 &x_mouse_click_focus_ignore_position, |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10877 doc: /* Non-nil means that a mouse click to focus a frame does not move point. |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10878 This variable is only used when the window manager requires that you |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10879 click on a frame to select it (give it focus). In that case, a value |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10880 of nil, means that the selected window and cursor position changes to |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10881 reflect the mouse click position, while a non-nil value means that the |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10882 selected window or cursor position is preserved. */); |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10883 x_mouse_click_focus_ignore_position = 0; |
|
9dc8330eda34
(x_mouse_click_focus_ignore_position): New var.
Kim F. Storm <storm@cua.dk>
parents:
54451
diff
changeset
|
10884 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
10885 DEFVAR_LISP ("x-toolkit-scroll-bars", &Vx_toolkit_scroll_bars, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39973
diff
changeset
|
10886 doc: /* What X toolkit scroll bars Emacs uses. |
|
39914
91951fb5b9e5
Put doc strings in comments.
Gerd Moellmann <gerd@gnu.org>
parents:
39821
diff
changeset
|
10887 A value of nil means Emacs doesn't use X toolkit scroll bars. |
|
91951fb5b9e5
Put doc strings in comments.
Gerd Moellmann <gerd@gnu.org>
parents:
39821
diff
changeset
|
10888 Otherwise, value is a symbol describing the X toolkit. */); |
|
34066
2482c17f546e
Test USE_TOOLKIT_SCROLL_BARS everywhere with #ifdef and
Gerd Moellmann <gerd@gnu.org>
parents:
34030
diff
changeset
|
10889 #ifdef USE_TOOLKIT_SCROLL_BARS |
|
34869
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
10890 #ifdef USE_MOTIF |
|
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
10891 Vx_toolkit_scroll_bars = intern ("motif"); |
|
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
10892 #elif defined HAVE_XAW3D |
|
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
10893 Vx_toolkit_scroll_bars = intern ("xaw3d"); |
| 49322 | 10894 #elif USE_GTK |
| 10895 Vx_toolkit_scroll_bars = intern ("gtk"); | |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10896 #else |
|
34869
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
10897 Vx_toolkit_scroll_bars = intern ("xaw"); |
|
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
10898 #endif |
|
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
10899 #else |
|
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34673
diff
changeset
|
10900 Vx_toolkit_scroll_bars = Qnil; |
|
24991
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10901 #endif |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10902 |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10903 staticpro (&last_mouse_motion_frame); |
|
53d428012caf
Display-related functions implemented from scratch. Add toolkit
Gerd Moellmann <gerd@gnu.org>
parents:
24941
diff
changeset
|
10904 last_mouse_motion_frame = Qnil; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10905 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10906 Qmodifier_value = intern ("modifier-value"); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10907 Qalt = intern ("alt"); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10908 Fput (Qalt, Qmodifier_value, make_number (alt_modifier)); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10909 Qhyper = intern ("hyper"); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10910 Fput (Qhyper, Qmodifier_value, make_number (hyper_modifier)); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10911 Qmeta = intern ("meta"); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10912 Fput (Qmeta, Qmodifier_value, make_number (meta_modifier)); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10913 Qsuper = intern ("super"); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10914 Fput (Qsuper, Qmodifier_value, make_number (super_modifier)); |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10915 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10916 DEFVAR_LISP ("x-alt-keysym", &Vx_alt_keysym, |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10917 doc: /* Which keys Emacs uses for the alt modifier. |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10918 This should be one of the symbols `alt', `hyper', `meta', `super'. |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10919 For example, `alt' means use the Alt_L and Alt_R keysyms. The default |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10920 is nil, which is the same as `alt'. */); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10921 Vx_alt_keysym = Qnil; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10922 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10923 DEFVAR_LISP ("x-hyper-keysym", &Vx_hyper_keysym, |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10924 doc: /* Which keys Emacs uses for the hyper modifier. |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10925 This should be one of the symbols `alt', `hyper', `meta', `super'. |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10926 For example, `hyper' means use the Hyper_L and Hyper_R keysyms. The |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10927 default is nil, which is the same as `hyper'. */); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10928 Vx_hyper_keysym = Qnil; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10929 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10930 DEFVAR_LISP ("x-meta-keysym", &Vx_meta_keysym, |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10931 doc: /* Which keys Emacs uses for the meta modifier. |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10932 This should be one of the symbols `alt', `hyper', `meta', `super'. |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10933 For example, `meta' means use the Meta_L and Meta_R keysyms. The |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10934 default is nil, which is the same as `meta'. */); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10935 Vx_meta_keysym = Qnil; |
|
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
47766
diff
changeset
|
10936 |
|
43302
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10937 DEFVAR_LISP ("x-super-keysym", &Vx_super_keysym, |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10938 doc: /* Which keys Emacs uses for the super modifier. |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10939 This should be one of the symbols `alt', `hyper', `meta', `super'. |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10940 For example, `super' means use the Super_L and Super_R keysyms. The |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10941 default is nil, which is the same as `super'. */); |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10942 Vx_super_keysym = Qnil; |
|
2f479ac769e1
(Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym)
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
42996
diff
changeset
|
10943 |
| 48085 | 10944 DEFVAR_LISP ("x-keysym-table", &Vx_keysym_table, |
| 10945 doc: /* Hash table of character codes indexed by X keysym codes. */); | |
| 10946 Vx_keysym_table = make_hash_table (Qeql, make_number (900), | |
| 10947 make_float (DEFAULT_REHASH_SIZE), | |
| 10948 make_float (DEFAULT_REHASH_THRESHOLD), | |
| 10949 Qnil, Qnil, Qnil); | |
| 395 | 10950 } |
|
14694
41de9b2640a1
(X_CONNECTION_LOCK_FLAG): New macro.
Richard M. Stallman <rms@gnu.org>
parents:
14692
diff
changeset
|
10951 |
| 39096 | 10952 #endif /* HAVE_X_WINDOWS */ |
| 52401 | 10953 |
| 10954 /* arch-tag: 6d4e4cb7-abc1-4302-9585-d84dcfb09d0f | |
| 10955 (do not change this comment) */ |
