Mercurial > emacs
annotate src/xfns.c @ 2402:61e1f8813d03
(vc-comment-to-changelog): A useful vc-checkin hook, added.
(vc-checkout): Now rejects attempts to check out files via FTP.
The `derived buffers' in the mode (the VC log buffer, status buffers,
and most buffer output commands) now know which file buffer was their
parent, and most commands will try to find such a parent buffer when
executed from within a special buffer.
author | Eric S. Raymond <esr@snark.thyrsus.com> |
---|---|
date | Sun, 28 Mar 1993 06:40:46 +0000 |
parents | cec8c9490d8a |
children | b6c62e4abf59 |
rev | line source |
---|---|
389 | 1 /* Functions for the X window system. |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2 Copyright (C) 1989, 1992, 1993 Free Software Foundation. |
389 | 3 |
4 This file is part of GNU Emacs. | |
5 | |
6 GNU Emacs is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
708 | 8 the Free Software Foundation; either version 2, or (at your option) |
389 | 9 any later version. |
10 | |
11 GNU Emacs is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GNU Emacs; see the file COPYING. If not, write to | |
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
19 | |
20 /* Completely rewritten by Richard Stallman. */ | |
21 | |
22 /* Rewritten for X11 by Joseph Arceneaux */ | |
23 | |
24 #if 0 | |
25 #include <stdio.h> | |
26 #endif | |
27 #include <signal.h> | |
28 #include "config.h" | |
29 #include "lisp.h" | |
30 #include "xterm.h" | |
771 | 31 #include "frame.h" |
389 | 32 #include "window.h" |
33 #include "buffer.h" | |
34 #include "dispextern.h" | |
515 | 35 #include "keyboard.h" |
389 | 36 |
37 #ifdef HAVE_X_WINDOWS | |
38 extern void abort (); | |
39 | |
2355
cec8c9490d8a
* xfns.c [VMS]: Get the gray_bits from [.bitmaps]gray.xbm.
Jim Blandy <jimb@redhat.com>
parents:
2341
diff
changeset
|
40 #ifndef VMS |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
41 #include <X11/bitmaps/gray> |
2355
cec8c9490d8a
* xfns.c [VMS]: Get the gray_bits from [.bitmaps]gray.xbm.
Jim Blandy <jimb@redhat.com>
parents:
2341
diff
changeset
|
42 #else |
cec8c9490d8a
* xfns.c [VMS]: Get the gray_bits from [.bitmaps]gray.xbm.
Jim Blandy <jimb@redhat.com>
parents:
2341
diff
changeset
|
43 #include "[.bitmaps]gray.xbm" |
cec8c9490d8a
* xfns.c [VMS]: Get the gray_bits from [.bitmaps]gray.xbm.
Jim Blandy <jimb@redhat.com>
parents:
2341
diff
changeset
|
44 #endif |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
45 |
389 | 46 #define min(a,b) ((a) < (b) ? (a) : (b)) |
47 #define max(a,b) ((a) > (b) ? (a) : (b)) | |
48 | |
49 #ifdef HAVE_X11 | |
50 /* X Resource data base */ | |
51 static XrmDatabase xrdb; | |
52 | |
53 /* The class of this X application. */ | |
54 #define EMACS_CLASS "Emacs" | |
55 | |
56 /* Title name and application name for X stuff. */ | |
398 | 57 extern char *x_id_name; |
389 | 58 |
59 /* The background and shape of the mouse pointer, and shape when not | |
60 over text or in the modeline. */ | |
61 Lisp_Object Vx_pointer_shape, Vx_nontext_pointer_shape, Vx_mode_pointer_shape; | |
62 | |
63 /* Color of chars displayed in cursor box. */ | |
64 Lisp_Object Vx_cursor_fore_pixel; | |
65 | |
2276
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
66 /* The screen being used. */ |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
67 static Screen *x_screen; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
68 |
389 | 69 /* The X Visual we are using for X windows (the default) */ |
70 Visual *screen_visual; | |
71 | |
72 /* Height of this X screen in pixels. */ | |
73 int x_screen_height; | |
74 | |
75 /* Width of this X screen in pixels. */ | |
76 int x_screen_width; | |
77 | |
78 /* Number of planes for this screen. */ | |
79 int x_screen_planes; | |
80 | |
81 /* Non nil if no window manager is in use. */ | |
82 Lisp_Object Vx_no_window_manager; | |
83 | |
84 /* `t' if a mouse button is depressed. */ | |
85 | |
86 Lisp_Object Vmouse_depressed; | |
87 | |
700
6a15fb0422ef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
697
diff
changeset
|
88 extern unsigned int x_mouse_x, x_mouse_y, x_mouse_grabbed; |
6a15fb0422ef
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
697
diff
changeset
|
89 |
389 | 90 /* Atom for indicating window state to the window manager. */ |
2197
fb5a1caebef6
(Xatom_wm_change_state): Just declare.
Richard M. Stallman <rms@gnu.org>
parents:
2136
diff
changeset
|
91 extern Atom Xatom_wm_change_state; |
389 | 92 |
641 | 93 /* Communication with window managers. */ |
94 extern Atom Xatom_wm_protocols; | |
95 | |
96 /* Kinds of protocol things we may receive. */ | |
97 extern Atom Xatom_wm_take_focus; | |
98 extern Atom Xatom_wm_save_yourself; | |
99 extern Atom Xatom_wm_delete_window; | |
100 | |
101 /* Other WM communication */ | |
642 | 102 extern Atom Xatom_wm_configure_denied; /* When our config request is denied */ |
103 extern Atom Xatom_wm_window_moved; /* When the WM moves us. */ | |
641 | 104 |
389 | 105 #else /* X10 */ |
106 | |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
107 /* Default size of an Emacs window. */ |
389 | 108 static char *default_window = "=80x24+0+0"; |
109 | |
110 #define MAXICID 80 | |
111 char iconidentity[MAXICID]; | |
112 #define ICONTAG "emacs@" | |
113 char minibuffer_iconidentity[MAXICID]; | |
114 #define MINIBUFFER_ICONTAG "minibuffer@" | |
115 | |
116 #endif /* X10 */ | |
117 | |
118 /* The last 23 bits of the timestamp of the last mouse button event. */ | |
119 Time mouse_timestamp; | |
120 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
121 /* Evaluate this expression to rebuild the section of syms_of_xfns |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
122 that initializes and staticpros the symbols declared below. Note |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
123 that Emacs 18 has a bug that keeps C-x C-e from being able to |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
124 evaluate this expression. |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
125 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
126 (progn |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
127 ;; Accumulate a list of the symbols we want to initialize from the |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
128 ;; declarations at the top of the file. |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
129 (goto-char (point-min)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
130 (search-forward "/\*&&& symbols declared here &&&*\/\n") |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
131 (let (symbol-list) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
132 (while (looking-at "Lisp_Object \\(Q[a-z_]+\\)") |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
133 (setq symbol-list |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
134 (cons (buffer-substring (match-beginning 1) (match-end 1)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
135 symbol-list)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
136 (forward-line 1)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
137 (setq symbol-list (nreverse symbol-list)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
138 ;; Delete the section of syms_of_... where we initialize the symbols. |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
139 (search-forward "\n /\*&&& init symbols here &&&*\/\n") |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
140 (let ((start (point))) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
141 (while (looking-at "^ Q") |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
142 (forward-line 2)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
143 (kill-region start (point))) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
144 ;; Write a new symbol initialization section. |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
145 (while symbol-list |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
146 (insert (format " %s = intern (\"" (car symbol-list))) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
147 (let ((start (point))) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
148 (insert (substring (car symbol-list) 1)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
149 (subst-char-in-region start (point) ?_ ?-)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
150 (insert (format "\");\n staticpro (&%s);\n" (car symbol-list))) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
151 (setq symbol-list (cdr symbol-list))))) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
152 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
153 */ |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
154 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
155 /*&&& symbols declared here &&&*/ |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
156 Lisp_Object Qauto_raise; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
157 Lisp_Object Qauto_lower; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
158 Lisp_Object Qbackground_color; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
159 Lisp_Object Qbar; |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
160 Lisp_Object Qborder_color; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
161 Lisp_Object Qborder_width; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
162 Lisp_Object Qbox; |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
163 Lisp_Object Qcursor_color; |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
164 Lisp_Object Qcursor_type; |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
165 Lisp_Object Qfont; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
166 Lisp_Object Qforeground_color; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
167 Lisp_Object Qgeometry; |
2294
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
168 Lisp_Object Qicon; |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
169 Lisp_Object Qicon_left; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
170 Lisp_Object Qicon_top; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
171 Lisp_Object Qicon_type; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
172 Lisp_Object Qinternal_border_width; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
173 Lisp_Object Qleft; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
174 Lisp_Object Qmouse_color; |
1874
19cf50641d6c
* frame.c (Fframe_parameters): Report the `minibuffer' parameter of
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
175 Lisp_Object Qnone; |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
176 Lisp_Object Qparent_id; |
2328
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
177 Lisp_Object Qsuppress_icon; |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
178 Lisp_Object Qtop; |
389 | 179 Lisp_Object Qundefined_color; |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
180 Lisp_Object Qvertical_scroll_bars; |
2294
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
181 Lisp_Object Qvisibility; |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
182 Lisp_Object Qwindow_id; |
771 | 183 Lisp_Object Qx_frame_parameter; |
389 | 184 |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
185 /* The below are defined in frame.c. */ |
1874
19cf50641d6c
* frame.c (Fframe_parameters): Report the `minibuffer' parameter of
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
186 extern Lisp_Object Qheight, Qminibuffer, Qname, Qonly, Qwidth; |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
187 extern Lisp_Object Qunsplittable, Qmenu_bar_lines, Qicon; |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
188 |
389 | 189 extern Lisp_Object Vwindow_system_version; |
190 | |
191 /* Mouse map for clicks in windows. */ | |
192 extern Lisp_Object Vglobal_mouse_map; | |
193 | |
194 /* Points to table of defined typefaces. */ | |
195 struct face *x_face_table[MAX_FACES_AND_GLYPHS]; | |
196 | |
771 | 197 /* Return the Emacs frame-object corresponding to an X window. |
198 It could be the frame's main window or an icon window. */ | |
199 | |
200 struct frame * | |
201 x_window_to_frame (wdesc) | |
389 | 202 int wdesc; |
203 { | |
771 | 204 Lisp_Object tail, frame; |
205 struct frame *f; | |
206 | |
207 for (tail = Vframe_list; CONSP (tail); tail = XCONS (tail)->cdr) | |
389 | 208 { |
771 | 209 frame = XCONS (tail)->car; |
210 if (XTYPE (frame) != Lisp_Frame) | |
389 | 211 continue; |
771 | 212 f = XFRAME (frame); |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
213 if (FRAME_X_WINDOW (f) == wdesc |
771 | 214 || f->display.x->icon_desc == wdesc) |
215 return f; | |
389 | 216 } |
217 return 0; | |
218 } | |
219 | |
220 | |
771 | 221 /* Connect the frame-parameter names for X frames |
389 | 222 to the ways of passing the parameter values to the window system. |
223 | |
224 The name of a parameter, as a Lisp symbol, | |
771 | 225 has an `x-frame-parameter' property which is an integer in Lisp |
226 but can be interpreted as an `enum x_frame_parm' in C. */ | |
227 | |
228 enum x_frame_parm | |
389 | 229 { |
230 X_PARM_FOREGROUND_COLOR, | |
231 X_PARM_BACKGROUND_COLOR, | |
232 X_PARM_MOUSE_COLOR, | |
233 X_PARM_CURSOR_COLOR, | |
234 X_PARM_BORDER_COLOR, | |
235 X_PARM_ICON_TYPE, | |
236 X_PARM_FONT, | |
237 X_PARM_BORDER_WIDTH, | |
238 X_PARM_INTERNAL_BORDER_WIDTH, | |
239 X_PARM_NAME, | |
240 X_PARM_AUTORAISE, | |
241 X_PARM_AUTOLOWER, | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
242 X_PARM_VERT_SCROLL_BAR, |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
243 X_PARM_VISIBILITY, |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
244 X_PARM_MENU_BAR_LINES |
389 | 245 }; |
246 | |
247 | |
771 | 248 struct x_frame_parm_table |
389 | 249 { |
250 char *name; | |
771 | 251 void (*setter)( /* struct frame *frame, Lisp_Object val, oldval */ ); |
389 | 252 }; |
253 | |
254 void x_set_foreground_color (); | |
255 void x_set_background_color (); | |
256 void x_set_mouse_color (); | |
257 void x_set_cursor_color (); | |
258 void x_set_border_color (); | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
259 void x_set_cursor_type (); |
389 | 260 void x_set_icon_type (); |
261 void x_set_font (); | |
262 void x_set_border_width (); | |
263 void x_set_internal_border_width (); | |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
264 void x_explicitly_set_name (); |
389 | 265 void x_set_autoraise (); |
266 void x_set_autolower (); | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
267 void x_set_vertical_scroll_bars (); |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
268 void x_set_visibility (); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
269 void x_set_menu_bar_lines (); |
389 | 270 |
771 | 271 static struct x_frame_parm_table x_frame_parms[] = |
389 | 272 { |
273 "foreground-color", x_set_foreground_color, | |
274 "background-color", x_set_background_color, | |
275 "mouse-color", x_set_mouse_color, | |
276 "cursor-color", x_set_cursor_color, | |
277 "border-color", x_set_border_color, | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
278 "cursor-type", x_set_cursor_type, |
389 | 279 "icon-type", x_set_icon_type, |
280 "font", x_set_font, | |
281 "border-width", x_set_border_width, | |
282 "internal-border-width", x_set_internal_border_width, | |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
283 "name", x_explicitly_set_name, |
1874
19cf50641d6c
* frame.c (Fframe_parameters): Report the `minibuffer' parameter of
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
284 "auto-raise", x_set_autoraise, |
19cf50641d6c
* frame.c (Fframe_parameters): Report the `minibuffer' parameter of
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
285 "auto-lower", x_set_autolower, |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
286 "vertical-scroll-bars", x_set_vertical_scroll_bars, |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
287 "visibility", x_set_visibility, |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
288 "menu-bar-lines", x_set_menu_bar_lines, |
389 | 289 }; |
290 | |
771 | 291 /* Attach the `x-frame-parameter' properties to |
389 | 292 the Lisp symbol names of parameters relevant to X. */ |
293 | |
294 init_x_parm_symbols () | |
295 { | |
296 int i; | |
297 | |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
298 for (i = 0; i < sizeof (x_frame_parms) / sizeof (x_frame_parms[0]); i++) |
771 | 299 Fput (intern (x_frame_parms[i].name), Qx_frame_parameter, |
389 | 300 make_number (i)); |
301 } | |
302 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
303 /* Change the parameters of FRAME as specified by ALIST. |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
304 If a parameter is not specially recognized, do nothing; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
305 otherwise call the `x_set_...' function for that parameter. */ |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
306 |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
307 void |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
308 x_set_frame_parameters (f, alist) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
309 FRAME_PTR f; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
310 Lisp_Object alist; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
311 { |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
312 Lisp_Object tail; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
313 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
314 /* If both of these parameters are present, it's more efficient to |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
315 set them both at once. So we wait until we've looked at the |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
316 entire list before we set them. */ |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
317 Lisp_Object width, height; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
318 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
319 /* Same here. */ |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
320 Lisp_Object left, top; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
321 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
322 XSET (width, Lisp_Int, FRAME_WIDTH (f)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
323 XSET (height, Lisp_Int, FRAME_HEIGHT (f)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
324 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
325 XSET (top, Lisp_Int, f->display.x->top_pos); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
326 XSET (left, Lisp_Int, f->display.x->left_pos); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
327 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
328 for (tail = alist; CONSP (tail); tail = Fcdr (tail)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
329 { |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
330 Lisp_Object elt, prop, val; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
331 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
332 elt = Fcar (tail); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
333 prop = Fcar (elt); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
334 val = Fcdr (elt); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
335 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
336 if (EQ (prop, Qwidth)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
337 width = val; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
338 else if (EQ (prop, Qheight)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
339 height = val; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
340 else if (EQ (prop, Qtop)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
341 top = val; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
342 else if (EQ (prop, Qleft)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
343 left = val; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
344 else |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
345 { |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
346 register Lisp_Object tem; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
347 tem = Fget (prop, Qx_frame_parameter); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
348 if (XTYPE (tem) == Lisp_Int |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
349 && XINT (tem) >= 0 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
350 && XINT (tem) < sizeof (x_frame_parms)/sizeof (x_frame_parms[0])) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
351 (*x_frame_parms[XINT (tem)].setter)(f, val, |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
352 get_frame_param (f, prop)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
353 store_frame_param (f, prop, val); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
354 } |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
355 } |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
356 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
357 /* Don't call these unless they've changed; the window may not actually |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
358 exist yet. */ |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
359 { |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
360 Lisp_Object frame; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
361 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
362 XSET (frame, Lisp_Frame, f); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
363 if (XINT (width) != FRAME_WIDTH (f) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
364 || XINT (height) != FRAME_HEIGHT (f)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
365 Fset_frame_size (frame, width, height); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
366 if (XINT (left) != f->display.x->left_pos |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
367 || XINT (top) != f->display.x->top_pos) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
368 Fset_frame_position (frame, left, top); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
369 } |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
370 } |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
371 |
771 | 372 /* Insert a description of internally-recorded parameters of frame X |
389 | 373 into the parameter alist *ALISTPTR that is to be given to the user. |
374 Only parameters that are specific to the X window system | |
771 | 375 and whose values are not correctly recorded in the frame's |
389 | 376 param_alist need to be considered here. */ |
377 | |
771 | 378 x_report_frame_params (f, alistptr) |
379 struct frame *f; | |
389 | 380 Lisp_Object *alistptr; |
381 { | |
382 char buf[16]; | |
383 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
384 store_in_alist (alistptr, Qleft, make_number (f->display.x->left_pos)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
385 store_in_alist (alistptr, Qtop, make_number (f->display.x->top_pos)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
386 store_in_alist (alistptr, Qborder_width, |
771 | 387 make_number (f->display.x->border_width)); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
388 store_in_alist (alistptr, Qinternal_border_width, |
771 | 389 make_number (f->display.x->internal_border_width)); |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
390 sprintf (buf, "%d", FRAME_X_WINDOW (f)); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
391 store_in_alist (alistptr, Qwindow_id, |
389 | 392 build_string (buf)); |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
393 store_in_alist (alistptr, Qvisibility, |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
394 (FRAME_VISIBLE_P (f) ? Qt |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
395 : FRAME_ICONIFIED_P (f) ? Qicon : Qnil)); |
389 | 396 } |
397 | |
398 /* Decide if color named COLOR is valid for the display | |
771 | 399 associated with the selected frame. */ |
389 | 400 int |
401 defined_color (color, color_def) | |
402 char *color; | |
403 Color *color_def; | |
404 { | |
405 register int foo; | |
406 Colormap screen_colormap; | |
407 | |
408 BLOCK_INPUT; | |
409 #ifdef HAVE_X11 | |
410 screen_colormap | |
411 = DefaultColormap (x_current_display, XDefaultScreen (x_current_display)); | |
412 | |
413 foo = XParseColor (x_current_display, screen_colormap, | |
414 color, color_def) | |
415 && XAllocColor (x_current_display, screen_colormap, color_def); | |
416 #else | |
417 foo = XParseColor (color, color_def) && XGetHardwareColor (color_def); | |
418 #endif /* not HAVE_X11 */ | |
419 UNBLOCK_INPUT; | |
420 | |
421 if (foo) | |
422 return 1; | |
423 else | |
424 return 0; | |
425 } | |
426 | |
427 /* Given a string ARG naming a color, compute a pixel value from it | |
771 | 428 suitable for screen F. |
429 If F is not a color screen, return DEF (default) regardless of what | |
389 | 430 ARG says. */ |
431 | |
432 int | |
433 x_decode_color (arg, def) | |
434 Lisp_Object arg; | |
435 int def; | |
436 { | |
437 Color cdef; | |
438 | |
439 CHECK_STRING (arg, 0); | |
440 | |
441 if (strcmp (XSTRING (arg)->data, "black") == 0) | |
442 return BLACK_PIX_DEFAULT; | |
443 else if (strcmp (XSTRING (arg)->data, "white") == 0) | |
444 return WHITE_PIX_DEFAULT; | |
445 | |
446 #ifdef HAVE_X11 | |
1528
924c8a609582
* xfns.c (x_decode_color, Fx_color_display_p): x_screen_planes is
Jim Blandy <jimb@redhat.com>
parents:
1438
diff
changeset
|
447 if (x_screen_planes == 1) |
389 | 448 return def; |
449 #else | |
485 | 450 if (DISPLAY_CELLS == 1) |
389 | 451 return def; |
452 #endif | |
453 | |
454 if (defined_color (XSTRING (arg)->data, &cdef)) | |
455 return cdef.pixel; | |
456 else | |
457 Fsignal (Qundefined_color, Fcons (arg, Qnil)); | |
458 } | |
459 | |
771 | 460 /* Functions called only from `x_set_frame_param' |
389 | 461 to set individual parameters. |
462 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
463 If FRAME_X_WINDOW (f) is 0, |
771 | 464 the frame is being created and its X-window does not exist yet. |
389 | 465 In that case, just record the parameter's new value |
466 in the standard place; do not attempt to change the window. */ | |
467 | |
468 void | |
771 | 469 x_set_foreground_color (f, arg, oldval) |
470 struct frame *f; | |
389 | 471 Lisp_Object arg, oldval; |
472 { | |
771 | 473 f->display.x->foreground_pixel = x_decode_color (arg, BLACK_PIX_DEFAULT); |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
474 if (FRAME_X_WINDOW (f) != 0) |
389 | 475 { |
476 #ifdef HAVE_X11 | |
477 BLOCK_INPUT; | |
771 | 478 XSetForeground (x_current_display, f->display.x->normal_gc, |
479 f->display.x->foreground_pixel); | |
480 XSetBackground (x_current_display, f->display.x->reverse_gc, | |
481 f->display.x->foreground_pixel); | |
389 | 482 UNBLOCK_INPUT; |
483 #endif /* HAVE_X11 */ | |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
484 if (FRAME_VISIBLE_P (f)) |
771 | 485 redraw_frame (f); |
389 | 486 } |
487 } | |
488 | |
489 void | |
771 | 490 x_set_background_color (f, arg, oldval) |
491 struct frame *f; | |
389 | 492 Lisp_Object arg, oldval; |
493 { | |
494 Pixmap temp; | |
495 int mask; | |
496 | |
771 | 497 f->display.x->background_pixel = x_decode_color (arg, WHITE_PIX_DEFAULT); |
498 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
499 if (FRAME_X_WINDOW (f) != 0) |
389 | 500 { |
501 BLOCK_INPUT; | |
502 #ifdef HAVE_X11 | |
771 | 503 /* The main frame area. */ |
504 XSetBackground (x_current_display, f->display.x->normal_gc, | |
505 f->display.x->background_pixel); | |
506 XSetForeground (x_current_display, f->display.x->reverse_gc, | |
507 f->display.x->background_pixel); | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
508 XSetWindowBackground (x_current_display, FRAME_X_WINDOW (f), |
771 | 509 f->display.x->background_pixel); |
389 | 510 |
511 #else | |
771 | 512 temp = XMakeTile (f->display.x->background_pixel); |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
513 XChangeBackground (FRAME_X_WINDOW (f), temp); |
389 | 514 XFreePixmap (temp); |
515 #endif /* not HAVE_X11 */ | |
516 UNBLOCK_INPUT; | |
517 | |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
518 if (FRAME_VISIBLE_P (f)) |
771 | 519 redraw_frame (f); |
389 | 520 } |
521 } | |
522 | |
523 void | |
771 | 524 x_set_mouse_color (f, arg, oldval) |
525 struct frame *f; | |
389 | 526 Lisp_Object arg, oldval; |
527 { | |
528 Cursor cursor, nontext_cursor, mode_cursor; | |
529 int mask_color; | |
530 | |
531 if (!EQ (Qnil, arg)) | |
771 | 532 f->display.x->mouse_pixel = x_decode_color (arg, BLACK_PIX_DEFAULT); |
533 mask_color = f->display.x->background_pixel; | |
389 | 534 /* No invisible pointers. */ |
771 | 535 if (mask_color == f->display.x->mouse_pixel |
536 && mask_color == f->display.x->background_pixel) | |
537 f->display.x->mouse_pixel = f->display.x->foreground_pixel; | |
389 | 538 |
539 BLOCK_INPUT; | |
540 #ifdef HAVE_X11 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
541 |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
542 /* It's not okay to crash if the user selects a screwey cursor. */ |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
543 x_catch_errors (); |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
544 |
389 | 545 if (!EQ (Qnil, Vx_pointer_shape)) |
546 { | |
547 CHECK_NUMBER (Vx_pointer_shape, 0); | |
548 cursor = XCreateFontCursor (x_current_display, XINT (Vx_pointer_shape)); | |
549 } | |
550 else | |
551 cursor = XCreateFontCursor (x_current_display, XC_xterm); | |
1528
924c8a609582
* xfns.c (x_decode_color, Fx_color_display_p): x_screen_planes is
Jim Blandy <jimb@redhat.com>
parents:
1438
diff
changeset
|
552 x_check_errors ("bad text pointer cursor: %s"); |
389 | 553 |
554 if (!EQ (Qnil, Vx_nontext_pointer_shape)) | |
555 { | |
556 CHECK_NUMBER (Vx_nontext_pointer_shape, 0); | |
557 nontext_cursor = XCreateFontCursor (x_current_display, | |
558 XINT (Vx_nontext_pointer_shape)); | |
559 } | |
560 else | |
561 nontext_cursor = XCreateFontCursor (x_current_display, XC_left_ptr); | |
1528
924c8a609582
* xfns.c (x_decode_color, Fx_color_display_p): x_screen_planes is
Jim Blandy <jimb@redhat.com>
parents:
1438
diff
changeset
|
562 x_check_errors ("bad nontext pointer cursor: %s"); |
389 | 563 |
564 if (!EQ (Qnil, Vx_mode_pointer_shape)) | |
565 { | |
566 CHECK_NUMBER (Vx_mode_pointer_shape, 0); | |
567 mode_cursor = XCreateFontCursor (x_current_display, | |
568 XINT (Vx_mode_pointer_shape)); | |
569 } | |
570 else | |
571 mode_cursor = XCreateFontCursor (x_current_display, XC_xterm); | |
572 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
573 /* Check and report errors with the above calls. */ |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
574 x_check_errors ("can't set cursor shape: %s"); |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
575 x_uncatch_errors (); |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
576 |
389 | 577 { |
578 XColor fore_color, back_color; | |
579 | |
771 | 580 fore_color.pixel = f->display.x->mouse_pixel; |
389 | 581 back_color.pixel = mask_color; |
582 XQueryColor (x_current_display, | |
583 DefaultColormap (x_current_display, | |
584 DefaultScreen (x_current_display)), | |
585 &fore_color); | |
586 XQueryColor (x_current_display, | |
587 DefaultColormap (x_current_display, | |
588 DefaultScreen (x_current_display)), | |
589 &back_color); | |
590 XRecolorCursor (x_current_display, cursor, | |
591 &fore_color, &back_color); | |
592 XRecolorCursor (x_current_display, nontext_cursor, | |
593 &fore_color, &back_color); | |
594 XRecolorCursor (x_current_display, mode_cursor, | |
595 &fore_color, &back_color); | |
596 } | |
597 #else /* X10 */ | |
598 cursor = XCreateCursor (16, 16, MouseCursor, MouseMask, | |
599 0, 0, | |
771 | 600 f->display.x->mouse_pixel, |
601 f->display.x->background_pixel, | |
389 | 602 GXcopy); |
603 #endif /* X10 */ | |
604 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
605 if (FRAME_X_WINDOW (f) != 0) |
389 | 606 { |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
607 XDefineCursor (XDISPLAY FRAME_X_WINDOW (f), cursor); |
389 | 608 } |
609 | |
771 | 610 if (cursor != f->display.x->text_cursor && f->display.x->text_cursor != 0) |
611 XFreeCursor (XDISPLAY f->display.x->text_cursor); | |
612 f->display.x->text_cursor = cursor; | |
389 | 613 #ifdef HAVE_X11 |
771 | 614 if (nontext_cursor != f->display.x->nontext_cursor |
615 && f->display.x->nontext_cursor != 0) | |
616 XFreeCursor (XDISPLAY f->display.x->nontext_cursor); | |
617 f->display.x->nontext_cursor = nontext_cursor; | |
618 | |
619 if (mode_cursor != f->display.x->modeline_cursor | |
620 && f->display.x->modeline_cursor != 0) | |
621 XFreeCursor (XDISPLAY f->display.x->modeline_cursor); | |
622 f->display.x->modeline_cursor = mode_cursor; | |
389 | 623 #endif /* HAVE_X11 */ |
624 | |
625 XFlushQueue (); | |
626 UNBLOCK_INPUT; | |
627 } | |
628 | |
629 void | |
771 | 630 x_set_cursor_color (f, arg, oldval) |
631 struct frame *f; | |
389 | 632 Lisp_Object arg, oldval; |
633 { | |
634 unsigned long fore_pixel; | |
635 | |
636 if (!EQ (Vx_cursor_fore_pixel, Qnil)) | |
637 fore_pixel = x_decode_color (Vx_cursor_fore_pixel, WHITE_PIX_DEFAULT); | |
638 else | |
771 | 639 fore_pixel = f->display.x->background_pixel; |
640 f->display.x->cursor_pixel = x_decode_color (arg, BLACK_PIX_DEFAULT); | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
641 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
642 /* Make sure that the cursor color differs from the background color. */ |
771 | 643 if (f->display.x->cursor_pixel == f->display.x->background_pixel) |
389 | 644 { |
771 | 645 f->display.x->cursor_pixel == f->display.x->mouse_pixel; |
646 if (f->display.x->cursor_pixel == fore_pixel) | |
647 fore_pixel = f->display.x->background_pixel; | |
389 | 648 } |
649 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
650 if (FRAME_X_WINDOW (f) != 0) |
389 | 651 { |
652 #ifdef HAVE_X11 | |
653 BLOCK_INPUT; | |
771 | 654 XSetBackground (x_current_display, f->display.x->cursor_gc, |
655 f->display.x->cursor_pixel); | |
656 XSetForeground (x_current_display, f->display.x->cursor_gc, | |
389 | 657 fore_pixel); |
658 UNBLOCK_INPUT; | |
659 #endif /* HAVE_X11 */ | |
660 | |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
661 if (FRAME_VISIBLE_P (f)) |
389 | 662 { |
771 | 663 x_display_cursor (f, 0); |
664 x_display_cursor (f, 1); | |
389 | 665 } |
666 } | |
667 } | |
668 | |
771 | 669 /* Set the border-color of frame F to value described by ARG. |
389 | 670 ARG can be a string naming a color. |
671 The border-color is used for the border that is drawn by the X server. | |
672 Note that this does not fully take effect if done before | |
771 | 673 F has an x-window; it must be redone when the window is created. |
389 | 674 |
675 Note: this is done in two routines because of the way X10 works. | |
676 | |
677 Note: under X11, this is normally the province of the window manager, | |
678 and so emacs' border colors may be overridden. */ | |
679 | |
680 void | |
771 | 681 x_set_border_color (f, arg, oldval) |
682 struct frame *f; | |
389 | 683 Lisp_Object arg, oldval; |
684 { | |
685 unsigned char *str; | |
686 int pix; | |
687 | |
688 CHECK_STRING (arg, 0); | |
689 str = XSTRING (arg)->data; | |
690 | |
691 #ifndef HAVE_X11 | |
692 if (!strcmp (str, "grey") || !strcmp (str, "Grey") | |
693 || !strcmp (str, "gray") || !strcmp (str, "Gray")) | |
694 pix = -1; | |
695 else | |
696 #endif /* X10 */ | |
697 | |
698 pix = x_decode_color (arg, BLACK_PIX_DEFAULT); | |
699 | |
771 | 700 x_set_border_pixel (f, pix); |
389 | 701 } |
702 | |
771 | 703 /* Set the border-color of frame F to pixel value PIX. |
389 | 704 Note that this does not fully take effect if done before |
771 | 705 F has an x-window. */ |
706 | |
707 x_set_border_pixel (f, pix) | |
708 struct frame *f; | |
389 | 709 int pix; |
710 { | |
771 | 711 f->display.x->border_pixel = pix; |
712 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
713 if (FRAME_X_WINDOW (f) != 0 && f->display.x->border_width > 0) |
389 | 714 { |
715 Pixmap temp; | |
716 int mask; | |
717 | |
718 BLOCK_INPUT; | |
719 #ifdef HAVE_X11 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
720 XSetWindowBorder (x_current_display, FRAME_X_WINDOW (f), |
389 | 721 pix); |
722 #else | |
723 if (pix < 0) | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
724 temp = XMakePixmap ((Bitmap) XStoreBitmap (gray_width, gray_height, |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
725 gray_bits), |
389 | 726 BLACK_PIX_DEFAULT, WHITE_PIX_DEFAULT); |
727 else | |
728 temp = XMakeTile (pix); | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
729 XChangeBorder (FRAME_X_WINDOW (f), temp); |
389 | 730 XFreePixmap (XDISPLAY temp); |
731 #endif /* not HAVE_X11 */ | |
732 UNBLOCK_INPUT; | |
733 | |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
734 if (FRAME_VISIBLE_P (f)) |
771 | 735 redraw_frame (f); |
389 | 736 } |
737 } | |
738 | |
739 void | |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
740 x_set_cursor_type (f, arg, oldval) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
741 FRAME_PTR f; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
742 Lisp_Object arg, oldval; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
743 { |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
744 if (EQ (arg, Qbar)) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
745 FRAME_DESIRED_CURSOR (f) = bar_cursor; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
746 else if (EQ (arg, Qbox)) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
747 FRAME_DESIRED_CURSOR (f) = filled_box_cursor; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
748 else |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
749 error |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
750 ("the `cursor-type' frame parameter should be either `bar' or `box'"); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
751 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
752 /* Make sure the cursor gets redrawn. This is overkill, but how |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
753 often do people change cursor types? */ |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
754 update_mode_lines++; |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
755 } |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
756 |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
757 void |
771 | 758 x_set_icon_type (f, arg, oldval) |
759 struct frame *f; | |
389 | 760 Lisp_Object arg, oldval; |
761 { | |
762 Lisp_Object tem; | |
763 int result; | |
764 | |
765 if (EQ (oldval, Qnil) == EQ (arg, Qnil)) | |
766 return; | |
767 | |
768 BLOCK_INPUT; | |
485 | 769 if (NILP (arg)) |
771 | 770 result = x_text_icon (f, 0); |
389 | 771 else |
1932
56dd1fbd33c2
* xfns.c (x_set_icon_type): Pass the proper number of arguments to
Jim Blandy <jimb@redhat.com>
parents:
1874
diff
changeset
|
772 result = x_bitmap_icon (f); |
389 | 773 |
774 if (result) | |
775 { | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
776 UNBLOCK_INPUT; |
389 | 777 error ("No icon window available."); |
778 } | |
779 | |
780 /* If the window was unmapped (and its icon was mapped), | |
781 the new icon is not mapped, so map the window in its stead. */ | |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
782 if (FRAME_VISIBLE_P (f)) |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
783 XMapWindow (XDISPLAY FRAME_X_WINDOW (f)); |
389 | 784 |
785 XFlushQueue (); | |
786 UNBLOCK_INPUT; | |
787 } | |
788 | |
789 void | |
771 | 790 x_set_font (f, arg, oldval) |
791 struct frame *f; | |
389 | 792 Lisp_Object arg, oldval; |
793 { | |
794 unsigned char *name; | |
795 int result; | |
796 | |
797 CHECK_STRING (arg, 1); | |
798 name = XSTRING (arg)->data; | |
799 | |
800 BLOCK_INPUT; | |
771 | 801 result = x_new_font (f, name); |
389 | 802 UNBLOCK_INPUT; |
803 | |
804 if (result) | |
805 error ("Font \"%s\" is not defined", name); | |
806 } | |
807 | |
808 void | |
771 | 809 x_set_border_width (f, arg, oldval) |
810 struct frame *f; | |
389 | 811 Lisp_Object arg, oldval; |
812 { | |
813 CHECK_NUMBER (arg, 0); | |
814 | |
771 | 815 if (XINT (arg) == f->display.x->border_width) |
389 | 816 return; |
817 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
818 if (FRAME_X_WINDOW (f) != 0) |
389 | 819 error ("Cannot change the border width of a window"); |
820 | |
771 | 821 f->display.x->border_width = XINT (arg); |
389 | 822 } |
823 | |
824 void | |
771 | 825 x_set_internal_border_width (f, arg, oldval) |
826 struct frame *f; | |
389 | 827 Lisp_Object arg, oldval; |
828 { | |
829 int mask; | |
771 | 830 int old = f->display.x->internal_border_width; |
389 | 831 |
832 CHECK_NUMBER (arg, 0); | |
771 | 833 f->display.x->internal_border_width = XINT (arg); |
834 if (f->display.x->internal_border_width < 0) | |
835 f->display.x->internal_border_width = 0; | |
836 | |
837 if (f->display.x->internal_border_width == old) | |
389 | 838 return; |
839 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
840 if (FRAME_X_WINDOW (f) != 0) |
389 | 841 { |
842 BLOCK_INPUT; | |
771 | 843 x_set_window_size (f, f->width, f->height); |
389 | 844 #if 0 |
771 | 845 x_set_resize_hint (f); |
389 | 846 #endif |
847 XFlushQueue (); | |
848 UNBLOCK_INPUT; | |
771 | 849 SET_FRAME_GARBAGED (f); |
389 | 850 } |
851 } | |
852 | |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
853 void |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
854 x_set_visibility (f, value, oldval) |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
855 struct frame *f; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
856 Lisp_Object value, oldval; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
857 { |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
858 Lisp_Object frame; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
859 XSET (frame, Lisp_Frame, f); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
860 |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
861 if (NILP (value)) |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
862 Fmake_frame_invisible (frame); |
2294
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
863 else if (EQ (value, Qicon)) |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
864 Ficonify_frame (frame); |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
865 else |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
866 Fmake_frame_visible (frame); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
867 } |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
868 |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
869 static void |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
870 x_set_menu_bar_lines_1 (window, n) |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
871 Lisp_Object window; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
872 int n; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
873 { |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
874 for (; !NILP (window); window = XWINDOW (window)->next) |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
875 { |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
876 struct window *w = XWINDOW (window); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
877 |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
878 w->top += n; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
879 |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
880 if (!NILP (w->vchild)) |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
881 x_set_menu_bar_lines_1 (w->vchild); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
882 |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
883 if (!NILP (w->hchild)) |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
884 x_set_menu_bar_lines_1 (w->hchild); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
885 } |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
886 } |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
887 |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
888 void |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
889 x_set_menu_bar_lines (f, value, oldval) |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
890 struct frame *f; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
891 Lisp_Object value, oldval; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
892 { |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
893 int nlines; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
894 int olines = FRAME_MENU_BAR_LINES (f); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
895 |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
896 if (XTYPE (value) == Lisp_Int) |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
897 nlines = XINT (value); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
898 else |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
899 nlines = 0; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
900 |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
901 FRAME_MENU_BAR_LINES (f) = nlines; |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
902 x_set_menu_bar_lines_1 (f->root_window, nlines - olines); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
903 x_set_window_size (f, FRAME_WIDTH (f), |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
904 FRAME_HEIGHT (f) + nlines - olines); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
905 } |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
906 |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
907 /* Change the name of frame F to ARG. If ARG is nil, set F's name to |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
908 x_id_name. |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
909 |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
910 If EXPLICIT is non-zero, that indicates that lisp code is setting the |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
911 name; if ARG is a string, set F's name to ARG and set |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
912 F->explicit_name; if ARG is Qnil, then clear F->explicit_name. |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
913 |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
914 If EXPLICIT is zero, that indicates that Emacs redisplay code is |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
915 suggesting a new name, which lisp code should override; if |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
916 F->explicit_name is set, ignore the new name; otherwise, set it. */ |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
917 |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
918 void |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
919 x_set_name (f, name, explicit) |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
920 struct frame *f; |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
921 Lisp_Object name; |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
922 int explicit; |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
923 { |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
924 /* Make sure that requests from lisp code override requests from |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
925 Emacs redisplay code. */ |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
926 if (explicit) |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
927 { |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
928 /* If we're switching from explicit to implicit, we had better |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
929 update the mode lines and thereby update the title. */ |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
930 if (f->explicit_name && NILP (name)) |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
931 update_mode_lines = 1; |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
932 |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
933 f->explicit_name = ! NILP (name); |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
934 } |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
935 else if (f->explicit_name) |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
936 return; |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
937 |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
938 /* If NAME is nil, set the name to the x_id_name. */ |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
939 if (NILP (name)) |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
940 name = build_string (x_id_name); |
833 | 941 else |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
942 CHECK_STRING (name, 0); |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
943 |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
944 /* Don't change the name if it's already NAME. */ |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
945 if (! NILP (Fstring_equal (name, f->name))) |
727 | 946 return; |
947 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
948 if (FRAME_X_WINDOW (f)) |
389 | 949 { |
708 | 950 BLOCK_INPUT; |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
951 |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
952 #ifdef HAVE_X11R4 |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
953 { |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
954 XTextProperty text; |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
955 text.value = XSTRING (name)->data; |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
956 text.encoding = XA_STRING; |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
957 text.format = 8; |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
958 text.nitems = XSTRING (name)->size; |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
959 XSetWMName (x_current_display, FRAME_X_WINDOW (f), &text); |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
960 XSetWMIconName (x_current_display, FRAME_X_WINDOW (f), &text); |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
961 } |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
962 #else |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
963 XSetIconName (XDISPLAY FRAME_X_WINDOW (f), |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
964 XSTRING (name)->data); |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
965 XStoreName (XDISPLAY FRAME_X_WINDOW (f), |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
966 XSTRING (name)->data); |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
967 #endif |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
968 |
708 | 969 UNBLOCK_INPUT; |
389 | 970 } |
727 | 971 |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
972 f->name = name; |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
973 } |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
974 |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
975 /* This function should be called when the user's lisp code has |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
976 specified a name for the frame; the name will override any set by the |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
977 redisplay code. */ |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
978 void |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
979 x_explicitly_set_name (f, arg, oldval) |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
980 FRAME_PTR f; |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
981 Lisp_Object arg, oldval; |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
982 { |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
983 x_set_name (f, arg, 1); |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
984 } |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
985 |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
986 /* This function should be called by Emacs redisplay code to set the |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
987 name; names set this way will never override names set by the user's |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
988 lisp code. */ |
1125
059624bf9bf0
Declare x_implicitly_set_name to be void.
Jim Blandy <jimb@redhat.com>
parents:
1096
diff
changeset
|
989 void |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
990 x_implicitly_set_name (f, arg, oldval) |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
991 FRAME_PTR f; |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
992 Lisp_Object arg, oldval; |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
993 { |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
994 x_set_name (f, arg, 0); |
389 | 995 } |
996 | |
997 void | |
771 | 998 x_set_autoraise (f, arg, oldval) |
999 struct frame *f; | |
389 | 1000 Lisp_Object arg, oldval; |
1001 { | |
771 | 1002 f->auto_raise = !EQ (Qnil, arg); |
389 | 1003 } |
1004 | |
1005 void | |
771 | 1006 x_set_autolower (f, arg, oldval) |
1007 struct frame *f; | |
389 | 1008 Lisp_Object arg, oldval; |
1009 { | |
771 | 1010 f->auto_lower = !EQ (Qnil, arg); |
389 | 1011 } |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1012 |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1013 void |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
1014 x_set_vertical_scroll_bars (f, arg, oldval) |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1015 struct frame *f; |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1016 Lisp_Object arg, oldval; |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1017 { |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
1018 if (NILP (arg) != ! FRAME_HAS_VERTICAL_SCROLL_BARS (f)) |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1019 { |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
1020 FRAME_HAS_VERTICAL_SCROLL_BARS (f) = ! NILP (arg); |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1021 |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1022 /* We set this parameter before creating the X window for the |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1023 frame, so we can get the geometry right from the start. |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1024 However, if the window hasn't been created yet, we shouldn't |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1025 call x_set_window_size. */ |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1026 if (FRAME_X_WINDOW (f)) |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1027 x_set_window_size (f, FRAME_WIDTH (f), FRAME_HEIGHT (f)); |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1028 } |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1029 } |
389 | 1030 |
1031 #ifdef HAVE_X11 | |
1032 int n_faces; | |
1033 | |
1438
57f20a185901
Same. * xfns.c (x_set_face): Dyked out this function; it has no callers,
Jim Blandy <jimb@redhat.com>
parents:
1125
diff
changeset
|
1034 #if 0 |
57f20a185901
Same. * xfns.c (x_set_face): Dyked out this function; it has no callers,
Jim Blandy <jimb@redhat.com>
parents:
1125
diff
changeset
|
1035 /* I believe this function is obsolete with respect to the new face display |
57f20a185901
Same. * xfns.c (x_set_face): Dyked out this function; it has no callers,
Jim Blandy <jimb@redhat.com>
parents:
1125
diff
changeset
|
1036 changes. */ |
389 | 1037 x_set_face (scr, font, background, foreground, stipple) |
771 | 1038 struct frame *scr; |
389 | 1039 XFontStruct *font; |
1040 unsigned long background, foreground; | |
1041 Pixmap stipple; | |
1042 { | |
1043 XGCValues gc_values; | |
1044 GC temp_gc; | |
1045 unsigned long gc_mask; | |
1046 struct face *new_face; | |
1047 unsigned int width = 16; | |
1048 unsigned int height = 16; | |
1049 | |
1050 if (n_faces == MAX_FACES_AND_GLYPHS) | |
1051 return 1; | |
1052 | |
1053 /* Create the Graphics Context. */ | |
1054 gc_values.font = font->fid; | |
1055 gc_values.foreground = foreground; | |
1056 gc_values.background = background; | |
1057 gc_values.line_width = 0; | |
1058 gc_mask = GCLineWidth | GCFont | GCForeground | GCBackground; | |
1059 if (stipple) | |
1060 { | |
1061 gc_values.stipple | |
1062 = XCreateBitmapFromData (x_current_display, ROOT_WINDOW, | |
1063 (char *) stipple, width, height); | |
1064 gc_mask |= GCStipple; | |
1065 } | |
1066 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1067 temp_gc = XCreateGC (x_current_display, FRAME_X_WINDOW (scr), |
389 | 1068 gc_mask, &gc_values); |
1069 if (!temp_gc) | |
1070 return 1; | |
1071 new_face = (struct face *) xmalloc (sizeof (struct face)); | |
1072 if (!new_face) | |
1073 { | |
1074 XFreeGC (x_current_display, temp_gc); | |
1075 return 1; | |
1076 } | |
1077 | |
1078 new_face->font = font; | |
1079 new_face->foreground = foreground; | |
1080 new_face->background = background; | |
1081 new_face->face_gc = temp_gc; | |
1082 if (stipple) | |
1083 new_face->stipple = gc_values.stipple; | |
1084 | |
1085 x_face_table[++n_faces] = new_face; | |
1086 return 1; | |
1087 } | |
1438
57f20a185901
Same. * xfns.c (x_set_face): Dyked out this function; it has no callers,
Jim Blandy <jimb@redhat.com>
parents:
1125
diff
changeset
|
1088 #endif |
389 | 1089 |
1090 x_set_glyph (scr, glyph) | |
1091 { | |
1092 } | |
1093 | |
1094 #if 0 | |
1095 DEFUN ("x-set-face-font", Fx_set_face_font, Sx_set_face_font, 4, 2, 0, | |
1096 "Specify face table entry FACE-CODE to be the font named by FONT,\n\ | |
1097 in colors FOREGROUND and BACKGROUND.") | |
1098 (face_code, font_name, foreground, background) | |
1099 Lisp_Object face_code; | |
1100 Lisp_Object font_name; | |
1101 Lisp_Object foreground; | |
1102 Lisp_Object background; | |
1103 { | |
1104 register struct face *fp; /* Current face info. */ | |
1105 register int fn; /* Face number. */ | |
1106 register FONT_TYPE *f; /* Font data structure. */ | |
1107 unsigned char *newname; | |
1108 int fg, bg; | |
1109 GC temp_gc; | |
1110 XGCValues gc_values; | |
1111 | |
1112 /* Need to do something about this. */ | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1113 Drawable drawable = FRAME_X_WINDOW (selected_frame); |
389 | 1114 |
1115 CHECK_NUMBER (face_code, 1); | |
1116 CHECK_STRING (font_name, 2); | |
1117 | |
1118 if (EQ (foreground, Qnil) || EQ (background, Qnil)) | |
1119 { | |
771 | 1120 fg = selected_frame->display.x->foreground_pixel; |
1121 bg = selected_frame->display.x->background_pixel; | |
389 | 1122 } |
1123 else | |
1124 { | |
1125 CHECK_NUMBER (foreground, 0); | |
1126 CHECK_NUMBER (background, 1); | |
1127 | |
1128 fg = x_decode_color (XINT (foreground), BLACK_PIX_DEFAULT); | |
1129 bg = x_decode_color (XINT (background), WHITE_PIX_DEFAULT); | |
1130 } | |
1131 | |
1132 fn = XINT (face_code); | |
1133 if ((fn < 1) || (fn > 255)) | |
1134 error ("Invalid face code, %d", fn); | |
1135 | |
1136 newname = XSTRING (font_name)->data; | |
1137 BLOCK_INPUT; | |
1138 f = (*newname == 0 ? 0 : XGetFont (newname)); | |
1139 UNBLOCK_INPUT; | |
1140 if (f == 0) | |
1141 error ("Font \"%s\" is not defined", newname); | |
1142 | |
1143 fp = x_face_table[fn]; | |
1144 if (fp == 0) | |
1145 { | |
1146 x_face_table[fn] = fp = (struct face *) xmalloc (sizeof (struct face)); | |
1147 bzero (fp, sizeof (struct face)); | |
1148 fp->face_type = x_pixmap; | |
1149 } | |
1150 else if (FACE_IS_FONT (fn)) | |
1151 { | |
1152 BLOCK_INPUT; | |
1153 XFreeGC (FACE_FONT (fn)); | |
1154 UNBLOCK_INPUT; | |
1155 } | |
1156 else if (FACE_IS_IMAGE (fn)) /* This should not happen... */ | |
1157 { | |
1158 BLOCK_INPUT; | |
1159 XFreePixmap (x_current_display, FACE_IMAGE (fn)); | |
1160 fp->face_type = x_font; | |
1161 UNBLOCK_INPUT; | |
1162 } | |
1163 else | |
1164 abort (); | |
1165 | |
1166 fp->face_GLYPH.font_desc.font = f; | |
1167 gc_values.font = f->fid; | |
1168 gc_values.foreground = fg; | |
1169 gc_values.background = bg; | |
1170 fp->face_GLYPH.font_desc.face_gc = XCreateGC (x_current_display, | |
1171 drawable, GCFont | GCForeground | |
1172 | GCBackground, &gc_values); | |
1173 fp->face_GLYPH.font_desc.font_width = FONT_WIDTH (f); | |
1174 fp->face_GLYPH.font_desc.font_height = FONT_HEIGHT (f); | |
1175 | |
1176 return face_code; | |
1177 } | |
1178 #endif | |
1179 #else /* X10 */ | |
1180 DEFUN ("x-set-face", Fx_set_face, Sx_set_face, 4, 4, 0, | |
1181 "Specify face table entry FACE-CODE to be the font named by FONT,\n\ | |
1182 in colors FOREGROUND and BACKGROUND.") | |
1183 (face_code, font_name, foreground, background) | |
1184 Lisp_Object face_code; | |
1185 Lisp_Object font_name; | |
1186 Lisp_Object foreground; | |
1187 Lisp_Object background; | |
1188 { | |
1189 register struct face *fp; /* Current face info. */ | |
1190 register int fn; /* Face number. */ | |
1191 register FONT_TYPE *f; /* Font data structure. */ | |
1192 unsigned char *newname; | |
1193 | |
1194 CHECK_NUMBER (face_code, 1); | |
1195 CHECK_STRING (font_name, 2); | |
1196 | |
1197 fn = XINT (face_code); | |
1198 if ((fn < 1) || (fn > 255)) | |
1199 error ("Invalid face code, %d", fn); | |
1200 | |
1201 /* Ask the server to find the specified font. */ | |
1202 newname = XSTRING (font_name)->data; | |
1203 BLOCK_INPUT; | |
1204 f = (*newname == 0 ? 0 : XGetFont (newname)); | |
1205 UNBLOCK_INPUT; | |
1206 if (f == 0) | |
1207 error ("Font \"%s\" is not defined", newname); | |
1208 | |
1209 /* Get the face structure for face_code in the face table. | |
1210 Make sure it exists. */ | |
1211 fp = x_face_table[fn]; | |
1212 if (fp == 0) | |
1213 { | |
1214 x_face_table[fn] = fp = (struct face *) xmalloc (sizeof (struct face)); | |
1215 bzero (fp, sizeof (struct face)); | |
1216 } | |
1217 | |
1218 /* If this face code already exists, get rid of the old font. */ | |
1219 if (fp->font != 0 && fp->font != f) | |
1220 { | |
1221 BLOCK_INPUT; | |
1222 XLoseFont (fp->font); | |
1223 UNBLOCK_INPUT; | |
1224 } | |
1225 | |
1226 /* Store the specified information in FP. */ | |
1227 fp->fg = x_decode_color (foreground, BLACK_PIX_DEFAULT); | |
1228 fp->bg = x_decode_color (background, WHITE_PIX_DEFAULT); | |
1229 fp->font = f; | |
1230 | |
1231 return face_code; | |
1232 } | |
1233 #endif /* X10 */ | |
1234 | |
1235 #if 0 | |
1236 /* This is excluded because there is no painless way | |
1237 to get or to remember the name of the font. */ | |
1238 | |
1239 DEFUN ("x-get-face", Fx_get_face, Sx_get_face, 1, 1, 0, | |
1240 "Get data defining face code FACE. FACE is an integer.\n\ | |
1241 The value is a list (FONT FG-COLOR BG-COLOR).") | |
1242 (face) | |
1243 Lisp_Object face; | |
1244 { | |
1245 register struct face *fp; /* Current face info. */ | |
1246 register int fn; /* Face number. */ | |
1247 | |
1248 CHECK_NUMBER (face, 1); | |
1249 fn = XINT (face); | |
1250 if ((fn < 1) || (fn > 255)) | |
1251 error ("Invalid face code, %d", fn); | |
1252 | |
1253 /* Make sure the face table exists and this face code is defined. */ | |
1254 if (x_face_table == 0 || x_face_table[fn] == 0) | |
1255 return Qnil; | |
1256 | |
1257 fp = x_face_table[fn]; | |
1258 | |
1259 return Fcons (build_string (fp->name), | |
1260 Fcons (make_number (fp->fg), | |
1261 Fcons (make_number (fp->bg), Qnil))); | |
1262 } | |
1263 #endif /* 0 */ | |
1264 | |
771 | 1265 /* Subroutines of creating an X frame. */ |
389 | 1266 |
1267 #ifdef HAVE_X11 | |
1268 extern char *x_get_string_resource (); | |
1269 extern XrmDatabase x_load_resources (); | |
1270 | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1271 DEFUN ("x-get-resource", Fx_get_resource, Sx_get_resource, 2, 4, 0, |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1272 "Return the value of ATTRIBUTE, of class CLASS, from the X defaults database.\n\ |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1273 This uses `INSTANCE.ATTRIBUTE' as the key and `Emacs.CLASS' as the\n\ |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1274 class, where INSTANCE is the name under which Emacs was invoked.\n\ |
389 | 1275 \n\ |
1733
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1276 The optional arguments COMPONENT and SUBCLASS add to the key and the\n\ |
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1277 class, respectively. You must specify both of them or neither.\n\ |
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1278 If you specify them, the key is `INSTANCE.COMPONENT.ATTRIBUTE'\n\ |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1279 and the class is `Emacs.CLASS.SUBCLASS'.") |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1280 (attribute, class, component, subclass) |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1281 Lisp_Object attribute, class, component, subclass; |
389 | 1282 { |
1283 register char *value; | |
1284 char *name_key; | |
1285 char *class_key; | |
1286 | |
1287 CHECK_STRING (attribute, 0); | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1288 CHECK_STRING (class, 0); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1289 |
1733
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1290 if (!NILP (component)) |
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1291 CHECK_STRING (component, 1); |
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1292 if (!NILP (subclass)) |
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1293 CHECK_STRING (subclass, 2); |
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1294 if (NILP (component) != NILP (subclass)) |
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1295 error ("x-get-resource: must specify both COMPONENT and SUBCLASS or neither"); |
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1296 |
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1297 if (NILP (component)) |
389 | 1298 { |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1299 /* Allocate space for the components, the dots which separate them, |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1300 and the final '\0'. */ |
2279
012b04efa234
* emacs.c (Finvocation_name): New function.
Jim Blandy <jimb@redhat.com>
parents:
2277
diff
changeset
|
1301 name_key = (char *) alloca (XSTRING (Vinvocation_name)->size |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1302 + XSTRING (attribute)->size |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1303 + 2); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1304 class_key = (char *) alloca ((sizeof (EMACS_CLASS) - 1) |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1305 + XSTRING (class)->size |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1306 + 2); |
398 | 1307 |
389 | 1308 sprintf (name_key, "%s.%s", |
2279
012b04efa234
* emacs.c (Finvocation_name): New function.
Jim Blandy <jimb@redhat.com>
parents:
2277
diff
changeset
|
1309 XSTRING (Vinvocation_name)->data, |
389 | 1310 XSTRING (attribute)->data); |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1311 sprintf (class_key, "%s.%s", |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1312 EMACS_CLASS, |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1313 XSTRING (class)->data); |
389 | 1314 } |
1315 else | |
1316 { | |
2279
012b04efa234
* emacs.c (Finvocation_name): New function.
Jim Blandy <jimb@redhat.com>
parents:
2277
diff
changeset
|
1317 name_key = (char *) alloca (XSTRING (Vinvocation_name)->size |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1318 + XSTRING (component)->size |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1319 + XSTRING (attribute)->size |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1320 + 3); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1321 |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1322 class_key = (char *) alloca ((sizeof (EMACS_CLASS) - 1) |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1323 + XSTRING (class)->size |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1324 + XSTRING (subclass)->size |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1325 + 3); |
389 | 1326 |
1327 sprintf (name_key, "%s.%s.%s", | |
2279
012b04efa234
* emacs.c (Finvocation_name): New function.
Jim Blandy <jimb@redhat.com>
parents:
2277
diff
changeset
|
1328 XSTRING (Vinvocation_name)->data, |
1733
2d41a3d7b9a6
(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman <rms@gnu.org>
parents:
1719
diff
changeset
|
1329 XSTRING (component)->data, |
389 | 1330 XSTRING (attribute)->data); |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1331 sprintf (class_key, "%s.%s", |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1332 EMACS_CLASS, |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1333 XSTRING (class)->data, |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1334 XSTRING (subclass)->data); |
389 | 1335 } |
1336 | |
1337 value = x_get_string_resource (xrdb, name_key, class_key); | |
1338 | |
1339 if (value != (char *) 0) | |
1340 return build_string (value); | |
1341 else | |
1342 return Qnil; | |
1343 } | |
1344 | |
1345 #else /* X10 */ | |
1346 | |
398 | 1347 DEFUN ("x-get-default", Fx_get_default, Sx_get_default, 1, 1, 0, |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1348 "Get X default ATTRIBUTE from the system, or nil if no default.\n\ |
389 | 1349 Value is a string (when not nil) and ATTRIBUTE is also a string.\n\ |
1350 The defaults are specified in the file `~/.Xdefaults'.") | |
398 | 1351 (arg) |
1352 Lisp_Object arg; | |
389 | 1353 { |
1354 register unsigned char *value; | |
1355 | |
1356 CHECK_STRING (arg, 1); | |
1357 | |
1358 value = (unsigned char *) XGetDefault (XDISPLAY | |
2279
012b04efa234
* emacs.c (Finvocation_name): New function.
Jim Blandy <jimb@redhat.com>
parents:
2277
diff
changeset
|
1359 XSTRING (Vinvocation_name)->data, |
389 | 1360 XSTRING (arg)->data); |
1361 if (value == 0) | |
1362 /* Try reversing last two args, in case this is the buggy version of X. */ | |
1363 value = (unsigned char *) XGetDefault (XDISPLAY | |
1364 XSTRING (arg)->data, | |
2279
012b04efa234
* emacs.c (Finvocation_name): New function.
Jim Blandy <jimb@redhat.com>
parents:
2277
diff
changeset
|
1365 XSTRING (Vinvocation_name)->data); |
389 | 1366 if (value != 0) |
1367 return build_string (value); | |
1368 else | |
1369 return (Qnil); | |
1370 } | |
1371 | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1372 #define Fx_get_resource(attribute, class, component, subclass) \ |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1373 Fx_get_default(attribute) |
389 | 1374 |
1375 #endif /* X10 */ | |
1376 | |
398 | 1377 /* Types we might convert a resource string into. */ |
1378 enum resource_types | |
1379 { | |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1380 number, boolean, string, symbol, |
398 | 1381 }; |
1382 | |
389 | 1383 /* Return the value of parameter PARAM. |
398 | 1384 |
771 | 1385 First search ALIST, then Vdefault_frame_alist, then the X defaults |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1386 database, using ATTRIBUTE as the attribute name and CLASS as its class. |
398 | 1387 |
1388 Convert the resource to the type specified by desired_type. | |
1389 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1390 If no default is specified, return Qunbound. If you call |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1391 x_get_arg, make sure you deal with Qunbound in a reasonable way, |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1392 and don't let it get stored in any lisp-visible variables! */ |
389 | 1393 |
1394 static Lisp_Object | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1395 x_get_arg (alist, param, attribute, class, type) |
641 | 1396 Lisp_Object alist, param; |
398 | 1397 char *attribute; |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1398 char *class; |
398 | 1399 enum resource_types type; |
389 | 1400 { |
1401 register Lisp_Object tem; | |
1402 | |
1403 tem = Fassq (param, alist); | |
1404 if (EQ (tem, Qnil)) | |
771 | 1405 tem = Fassq (param, Vdefault_frame_alist); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1406 if (EQ (tem, Qnil)) |
389 | 1407 { |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1408 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1409 if (attribute) |
398 | 1410 { |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1411 tem = Fx_get_resource (build_string (attribute), |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1412 build_string (class), |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1413 Qnil, Qnil); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1414 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1415 if (NILP (tem)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1416 return Qunbound; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1417 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1418 switch (type) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1419 { |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1420 case number: |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1421 return make_number (atoi (XSTRING (tem)->data)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1422 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1423 case boolean: |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1424 tem = Fdowncase (tem); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1425 if (!strcmp (XSTRING (tem)->data, "on") |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1426 || !strcmp (XSTRING (tem)->data, "true")) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1427 return Qt; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1428 else |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1429 return Qnil; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1430 |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1431 case string: |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1432 return tem; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1433 |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1434 case symbol: |
2294
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1435 /* As a special case, we map the values `true' and `on' |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1436 to Qt, and `false' and `off' to Qnil. */ |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1437 { |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1438 Lisp_Object lower = Fdowncase (tem); |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1439 if (!strcmp (XSTRING (tem)->data, "on") |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1440 || !strcmp (XSTRING (tem)->data, "true")) |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1441 return Qt; |
2295 | 1442 else if (!strcmp (XSTRING (tem)->data, "off") |
2294
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1443 || !strcmp (XSTRING (tem)->data, "false")) |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1444 return Qnil; |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1445 else |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1446 return intern (tem); |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1447 } |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1448 |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1449 default: |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1450 abort (); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1451 } |
398 | 1452 } |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1453 else |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1454 return Qunbound; |
389 | 1455 } |
1456 return Fcdr (tem); | |
1457 } | |
1458 | |
771 | 1459 /* Record in frame F the specified or default value according to ALIST |
389 | 1460 of the parameter named PARAM (a Lisp symbol). |
1461 If no value is specified for PARAM, look for an X default for XPROP | |
771 | 1462 on the frame named NAME. |
389 | 1463 If that is not found either, use the value DEFLT. */ |
1464 | |
1465 static Lisp_Object | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1466 x_default_parameter (f, alist, prop, deflt, xprop, xclass, type) |
771 | 1467 struct frame *f; |
389 | 1468 Lisp_Object alist; |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1469 Lisp_Object prop; |
389 | 1470 Lisp_Object deflt; |
1471 char *xprop; | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1472 char *xclass; |
398 | 1473 enum resource_types type; |
389 | 1474 { |
1475 Lisp_Object tem; | |
1476 | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1477 tem = x_get_arg (alist, prop, xprop, xclass, type); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1478 if (EQ (tem, Qunbound)) |
389 | 1479 tem = deflt; |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1480 x_set_frame_parameters (f, Fcons (Fcons (prop, tem), Qnil)); |
389 | 1481 return tem; |
1482 } | |
1483 | |
2328
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
1484 DEFUN ("x-parse-geometry", Fx_parse_geometry, Sx_parse_geometry, 1, 1, 0, |
389 | 1485 "Parse an X-style geometry string STRING.\n\ |
1486 Returns an alist of the form ((top . TOP), (left . LEFT) ... ).") | |
1487 (string) | |
1528
924c8a609582
* xfns.c (x_decode_color, Fx_color_display_p): x_screen_planes is
Jim Blandy <jimb@redhat.com>
parents:
1438
diff
changeset
|
1488 Lisp_Object string; |
389 | 1489 { |
1490 int geometry, x, y; | |
1491 unsigned int width, height; | |
1492 Lisp_Object values[4]; | |
1493 | |
1494 CHECK_STRING (string, 0); | |
1495 | |
1496 geometry = XParseGeometry ((char *) XSTRING (string)->data, | |
1497 &x, &y, &width, &height); | |
1498 | |
1499 switch (geometry & 0xf) /* Mask out {X,Y}Negative */ | |
1500 { | |
1501 case (XValue | YValue): | |
1502 /* What's one pixel among friends? | |
1503 Perhaps fix this some day by returning symbol `extreme-top'... */ | |
1504 if (x == 0 && (geometry & XNegative)) | |
1505 x = -1; | |
1506 if (y == 0 && (geometry & YNegative)) | |
1507 y = -1; | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1508 values[0] = Fcons (Qleft, make_number (x)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1509 values[1] = Fcons (Qtop, make_number (y)); |
389 | 1510 return Flist (2, values); |
1511 break; | |
1512 | |
1513 case (WidthValue | HeightValue): | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1514 values[0] = Fcons (Qwidth, make_number (width)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1515 values[1] = Fcons (Qheight, make_number (height)); |
389 | 1516 return Flist (2, values); |
1517 break; | |
1518 | |
1519 case (XValue | YValue | WidthValue | HeightValue): | |
1520 if (x == 0 && (geometry & XNegative)) | |
1521 x = -1; | |
1522 if (y == 0 && (geometry & YNegative)) | |
1523 y = -1; | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1524 values[0] = Fcons (Qwidth, make_number (width)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1525 values[1] = Fcons (Qheight, make_number (height)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1526 values[2] = Fcons (Qleft, make_number (x)); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1527 values[3] = Fcons (Qtop, make_number (y)); |
389 | 1528 return Flist (4, values); |
1529 break; | |
1530 | |
1531 case 0: | |
1532 return Qnil; | |
1533 | |
1534 default: | |
1535 error ("Must specify x and y value, and/or width and height"); | |
1536 } | |
1537 } | |
1538 | |
1539 #ifdef HAVE_X11 | |
1540 /* Calculate the desired size and position of this window, | |
1541 or set rubber-band prompting if none. */ | |
1542 | |
1543 #define DEFAULT_ROWS 40 | |
1544 #define DEFAULT_COLS 80 | |
1545 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1546 static int |
771 | 1547 x_figure_window_size (f, parms) |
1548 struct frame *f; | |
389 | 1549 Lisp_Object parms; |
1550 { | |
1551 register Lisp_Object tem0, tem1; | |
1552 int height, width, left, top; | |
1553 register int geometry; | |
1554 long window_prompting = 0; | |
1555 | |
1556 /* Default values if we fall through. | |
1557 Actually, if that happens we should get | |
1558 window manager prompting. */ | |
771 | 1559 f->width = DEFAULT_COLS; |
1560 f->height = DEFAULT_ROWS; | |
1561 f->display.x->top_pos = 1; | |
1562 f->display.x->left_pos = 1; | |
389 | 1563 |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1564 tem0 = x_get_arg (parms, Qheight, 0, 0, number); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1565 tem1 = x_get_arg (parms, Qwidth, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1566 if (! EQ (tem0, Qunbound) && ! EQ (tem1, Qunbound)) |
389 | 1567 { |
1568 CHECK_NUMBER (tem0, 0); | |
1569 CHECK_NUMBER (tem1, 0); | |
771 | 1570 f->height = XINT (tem0); |
1571 f->width = XINT (tem1); | |
389 | 1572 window_prompting |= USSize; |
1573 } | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1574 else if (! EQ (tem0, Qunbound) || ! EQ (tem1, Qunbound)) |
389 | 1575 error ("Must specify *both* height and width"); |
1576 | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
1577 f->display.x->vertical_scroll_bar_extra = |
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
1578 (FRAME_HAS_VERTICAL_SCROLL_BARS (f) |
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
1579 ? VERTICAL_SCROLL_BAR_PIXEL_WIDTH (f) |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1580 : 0); |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1581 f->display.x->pixel_width = CHAR_TO_PIXEL_WIDTH (f, f->width); |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1582 f->display.x->pixel_height = CHAR_TO_PIXEL_HEIGHT (f, f->height); |
389 | 1583 |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1584 tem0 = x_get_arg (parms, Qtop, 0, 0, number); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1585 tem1 = x_get_arg (parms, Qleft, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1586 if (! EQ (tem0, Qunbound) && ! EQ (tem1, Qunbound)) |
389 | 1587 { |
1588 CHECK_NUMBER (tem0, 0); | |
1589 CHECK_NUMBER (tem1, 0); | |
771 | 1590 f->display.x->top_pos = XINT (tem0); |
1591 f->display.x->left_pos = XINT (tem1); | |
1592 x_calc_absolute_position (f); | |
389 | 1593 window_prompting |= USPosition; |
1594 } | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1595 else if (! EQ (tem0, Qunbound) || ! EQ (tem1, Qunbound)) |
389 | 1596 error ("Must specify *both* top and left corners"); |
1597 | |
1598 switch (window_prompting) | |
1599 { | |
1600 case USSize | USPosition: | |
1601 return window_prompting; | |
1602 break; | |
1603 | |
1604 case USSize: /* Got the size, need the position. */ | |
1605 window_prompting |= PPosition; | |
1606 return window_prompting; | |
1607 break; | |
1608 | |
1609 case USPosition: /* Got the position, need the size. */ | |
1610 window_prompting |= PSize; | |
1611 return window_prompting; | |
1612 break; | |
1613 | |
1614 case 0: /* Got nothing, take both from geometry. */ | |
1615 window_prompting |= PPosition | PSize; | |
1616 return window_prompting; | |
1617 break; | |
1618 | |
1619 default: | |
1620 /* Somehow a bit got set in window_prompting that we didn't | |
1621 put there. */ | |
1622 abort (); | |
1623 } | |
1624 } | |
1625 | |
1626 static void | |
771 | 1627 x_window (f) |
1628 struct frame *f; | |
389 | 1629 { |
1630 XSetWindowAttributes attributes; | |
1631 unsigned long attribute_mask; | |
1632 XClassHint class_hints; | |
1633 | |
771 | 1634 attributes.background_pixel = f->display.x->background_pixel; |
1635 attributes.border_pixel = f->display.x->border_pixel; | |
389 | 1636 attributes.bit_gravity = StaticGravity; |
1637 attributes.backing_store = NotUseful; | |
1638 attributes.save_under = True; | |
1639 attributes.event_mask = STANDARD_EVENT_SET; | |
1640 attribute_mask = (CWBackPixel | CWBorderPixel | CWBitGravity | |
1641 #if 0 | |
1642 | CWBackingStore | CWSaveUnder | |
1643 #endif | |
1644 | CWEventMask); | |
1645 | |
1646 BLOCK_INPUT; | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1647 FRAME_X_WINDOW (f) |
389 | 1648 = XCreateWindow (x_current_display, ROOT_WINDOW, |
771 | 1649 f->display.x->left_pos, |
1650 f->display.x->top_pos, | |
1651 PIXEL_WIDTH (f), PIXEL_HEIGHT (f), | |
1652 f->display.x->border_width, | |
389 | 1653 CopyFromParent, /* depth */ |
1654 InputOutput, /* class */ | |
1655 screen_visual, /* set in Fx_open_connection */ | |
1656 attribute_mask, &attributes); | |
1657 | |
771 | 1658 class_hints.res_name = (char *) XSTRING (f->name)->data; |
389 | 1659 class_hints.res_class = EMACS_CLASS; |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1660 XSetClassHint (x_current_display, FRAME_X_WINDOW (f), &class_hints); |
771 | 1661 |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1662 /* This indicates that we use the "Passive Input" input model. |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1663 Unless we do this, we don't get the Focus{In,Out} events that we |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1664 need to draw the cursor correctly. Accursed bureaucrats. |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1665 XWhipsAndChains (x_current_display, IronMaiden, &TheRack); */ |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1666 |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1667 f->display.x->wm_hints.input = True; |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1668 f->display.x->wm_hints.flags |= InputHint; |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1669 XSetWMHints (x_current_display, FRAME_X_WINDOW (f), &f->display.x->wm_hints); |
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1670 |
817 | 1671 /* x_set_name normally ignores requests to set the name if the |
1672 requested name is the same as the current name. This is the one | |
1673 place where that assumption isn't correct; f->name is set, but | |
1674 the X server hasn't been told. */ | |
1675 { | |
1676 Lisp_Object name = f->name; | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1677 int explicit = f->explicit_name; |
817 | 1678 |
1679 f->name = Qnil; | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1680 f->explicit_name = 0; |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1681 x_set_name (f, name, explicit); |
817 | 1682 } |
1683 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1684 XDefineCursor (XDISPLAY FRAME_X_WINDOW (f), |
771 | 1685 f->display.x->text_cursor); |
389 | 1686 UNBLOCK_INPUT; |
1687 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1688 if (FRAME_X_WINDOW (f) == 0) |
389 | 1689 error ("Unable to create window."); |
1690 } | |
1691 | |
1692 /* Handle the icon stuff for this window. Perhaps later we might | |
1693 want an x_set_icon_position which can be called interactively as | |
1694 well. */ | |
1695 | |
1696 static void | |
771 | 1697 x_icon (f, parms) |
1698 struct frame *f; | |
389 | 1699 Lisp_Object parms; |
1700 { | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1701 Lisp_Object icon_x, icon_y; |
389 | 1702 |
1703 /* Set the position of the icon. Note that twm groups all | |
1704 icons in an icon window. */ | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1705 icon_x = x_get_arg (parms, Qicon_left, 0, 0, number); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1706 icon_y = x_get_arg (parms, Qicon_top, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1707 if (!EQ (icon_x, Qunbound) && !EQ (icon_y, Qunbound)) |
389 | 1708 { |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1709 CHECK_NUMBER (icon_x, 0); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1710 CHECK_NUMBER (icon_y, 0); |
389 | 1711 } |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1712 else if (!EQ (icon_x, Qunbound) || !EQ (icon_y, Qunbound)) |
389 | 1713 error ("Both left and top icon corners of icon must be specified"); |
1714 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1715 BLOCK_INPUT; |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1716 |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1717 if (! EQ (icon_x, Qunbound)) |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1718 x_wm_set_icon_position (f, XINT (icon_x), XINT (icon_y)); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1719 |
389 | 1720 /* Start up iconic or window? */ |
2294
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1721 x_wm_set_window_state |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1722 (f, (EQ (x_get_arg (parms, Qvisibility, 0, 0, symbol), Qicon) |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1723 ? IconicState |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1724 : NormalState)); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1725 |
389 | 1726 UNBLOCK_INPUT; |
1727 } | |
1728 | |
1729 /* Make the GC's needed for this window, setting the | |
1730 background, border and mouse colors; also create the | |
1731 mouse cursor and the gray border tile. */ | |
1732 | |
1018
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1733 static char cursor_bits[] = |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1734 { |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1735 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1736 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1737 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1738 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1739 }; |
5fd29acd3db7
* xfns.c (x_set_name): Take new argument EXPLICIT, instead of
Jim Blandy <jimb@redhat.com>
parents:
974
diff
changeset
|
1740 |
389 | 1741 static void |
771 | 1742 x_make_gc (f) |
1743 struct frame *f; | |
389 | 1744 { |
1745 XGCValues gc_values; | |
1746 GC temp_gc; | |
1747 XImage tileimage; | |
1748 | |
2341
1982e2983822
* xfns.c (x_make_gc): Don't forget to block X input around the
Jim Blandy <jimb@redhat.com>
parents:
2328
diff
changeset
|
1749 BLOCK_INPUT; |
1982e2983822
* xfns.c (x_make_gc): Don't forget to block X input around the
Jim Blandy <jimb@redhat.com>
parents:
2328
diff
changeset
|
1750 |
771 | 1751 /* Create the GC's of this frame. |
389 | 1752 Note that many default values are used. */ |
1753 | |
1754 /* Normal video */ | |
771 | 1755 gc_values.font = f->display.x->font->fid; |
1756 gc_values.foreground = f->display.x->foreground_pixel; | |
1757 gc_values.background = f->display.x->background_pixel; | |
389 | 1758 gc_values.line_width = 0; /* Means 1 using fast algorithm. */ |
771 | 1759 f->display.x->normal_gc = XCreateGC (x_current_display, |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1760 FRAME_X_WINDOW (f), |
389 | 1761 GCLineWidth | GCFont |
1762 | GCForeground | GCBackground, | |
1763 &gc_values); | |
1764 | |
1765 /* Reverse video style. */ | |
771 | 1766 gc_values.foreground = f->display.x->background_pixel; |
1767 gc_values.background = f->display.x->foreground_pixel; | |
1768 f->display.x->reverse_gc = XCreateGC (x_current_display, | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1769 FRAME_X_WINDOW (f), |
389 | 1770 GCFont | GCForeground | GCBackground |
1771 | GCLineWidth, | |
1772 &gc_values); | |
1773 | |
1774 /* Cursor has cursor-color background, background-color foreground. */ | |
771 | 1775 gc_values.foreground = f->display.x->background_pixel; |
1776 gc_values.background = f->display.x->cursor_pixel; | |
389 | 1777 gc_values.fill_style = FillOpaqueStippled; |
1778 gc_values.stipple | |
1779 = XCreateBitmapFromData (x_current_display, ROOT_WINDOW, | |
1780 cursor_bits, 16, 16); | |
771 | 1781 f->display.x->cursor_gc |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
1782 = XCreateGC (x_current_display, FRAME_X_WINDOW (f), |
389 | 1783 (GCFont | GCForeground | GCBackground |
1784 | GCFillStyle | GCStipple | GCLineWidth), | |
1785 &gc_values); | |
1786 | |
1787 /* Create the gray border tile used when the pointer is not in | |
771 | 1788 the frame. Since this depends on the frame's pixel values, |
1789 this must be done on a per-frame basis. */ | |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1790 f->display.x->border_tile |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1791 = (XCreatePixmapFromBitmapData |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1792 (x_current_display, ROOT_WINDOW, |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1793 gray_bits, gray_width, gray_height, |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1794 f->display.x->foreground_pixel, |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1795 f->display.x->background_pixel, |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1796 DefaultDepth (x_current_display, XDefaultScreen (x_current_display)))); |
2341
1982e2983822
* xfns.c (x_make_gc): Don't forget to block X input around the
Jim Blandy <jimb@redhat.com>
parents:
2328
diff
changeset
|
1797 |
1982e2983822
* xfns.c (x_make_gc): Don't forget to block X input around the
Jim Blandy <jimb@redhat.com>
parents:
2328
diff
changeset
|
1798 UNBLOCK_INPUT; |
389 | 1799 } |
1800 #endif /* HAVE_X11 */ | |
1801 | |
771 | 1802 DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame, |
389 | 1803 1, 1, 0, |
771 | 1804 "Make a new X window, which is called a \"frame\" in Emacs terms.\n\ |
1805 Return an Emacs frame object representing the X window.\n\ | |
1806 ALIST is an alist of frame parameters.\n\ | |
1807 If the parameters specify that the frame should not have a minibuffer,\n\ | |
697
6dd85fc4fb2c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
689
diff
changeset
|
1808 and do not specify a specific minibuffer window to use,\n\ |
771 | 1809 then `default-minibuffer-frame' must be a frame whose minibuffer can\n\ |
1810 be shared by the new frame.") | |
389 | 1811 (parms) |
1812 Lisp_Object parms; | |
1813 { | |
1814 #ifdef HAVE_X11 | |
771 | 1815 struct frame *f; |
1816 Lisp_Object frame, tem; | |
389 | 1817 Lisp_Object name; |
1818 int minibuffer_only = 0; | |
1819 long window_prompting = 0; | |
1820 int width, height; | |
1821 | |
1822 if (x_current_display == 0) | |
1823 error ("X windows are not in use or not initialized"); | |
1824 | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1825 name = x_get_arg (parms, Qname, "title", "Title", string); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1826 if (XTYPE (name) != Lisp_String |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1827 && ! EQ (name, Qunbound) |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1828 && ! NILP (name)) |
771 | 1829 error ("x-create-frame: name parameter must be a string"); |
398 | 1830 |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1831 tem = x_get_arg (parms, Qminibuffer, 0, 0, symbol); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1832 if (EQ (tem, Qnone) || NILP (tem)) |
771 | 1833 f = make_frame_without_minibuffer (Qnil); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1834 else if (EQ (tem, Qonly)) |
389 | 1835 { |
771 | 1836 f = make_minibuffer_frame (); |
389 | 1837 minibuffer_only = 1; |
1838 } | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1839 else if (XTYPE (tem) == Lisp_Window) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1840 f = make_frame_without_minibuffer (tem); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1841 else |
771 | 1842 f = make_frame (1); |
1843 | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
1844 /* Note that X Windows does support scroll bars. */ |
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
1845 FRAME_CAN_HAVE_SCROLL_BARS (f) = 1; |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
1846 |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1847 /* Set the name; the functions to which we pass f expect the name to |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1848 be set. */ |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1849 if (EQ (name, Qunbound) || NILP (name)) |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1850 { |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1851 f->name = build_string (x_id_name); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1852 f->explicit_name = 0; |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1853 } |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1854 else |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1855 { |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1856 f->name = name; |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1857 f->explicit_name = 1; |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1858 } |
771 | 1859 |
1860 XSET (frame, Lisp_Frame, f); | |
1861 f->output_method = output_x_window; | |
1862 f->display.x = (struct x_display *) xmalloc (sizeof (struct x_display)); | |
1863 bzero (f->display.x, sizeof (struct x_display)); | |
1864 | |
1865 /* Note that the frame has no physical cursor right now. */ | |
1866 f->phys_cursor_x = -1; | |
485 | 1867 |
389 | 1868 /* Extract the window parameters from the supplied values |
1869 that are needed to determine window geometry. */ | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1870 x_default_parameter (f, parms, Qfont, build_string ("9x15"), |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1871 "font", "Font", string); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1872 x_default_parameter (f, parms, Qborder_width, make_number (2), |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1873 "borderwidth", "BorderWidth", number); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1874 /* This defaults to 2 in order to match xterm. */ |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1875 x_default_parameter (f, parms, Qinternal_border_width, make_number (2), |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1876 "internalBorderWidth", "BorderWidth", number); |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
1877 x_default_parameter (f, parms, Qvertical_scroll_bars, Qt, |
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
1878 "verticalScrollBars", "ScrollBars", boolean); |
389 | 1879 |
1880 /* Also do the stuff which must be set before the window exists. */ | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1881 x_default_parameter (f, parms, Qforeground_color, build_string ("black"), |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1882 "foreground", "Foreground", string); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1883 x_default_parameter (f, parms, Qbackground_color, build_string ("white"), |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1884 "background", "Background", string); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1885 x_default_parameter (f, parms, Qmouse_color, build_string ("black"), |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1886 "pointerColor", "Foreground", string); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1887 x_default_parameter (f, parms, Qcursor_color, build_string ("black"), |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1888 "cursorColor", "Foreground", string); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1889 x_default_parameter (f, parms, Qborder_color, build_string ("black"), |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1890 "borderColor", "BorderColor", string); |
389 | 1891 |
771 | 1892 f->display.x->parent_desc = ROOT_WINDOW; |
1893 window_prompting = x_figure_window_size (f, parms); | |
1894 | |
1895 x_window (f); | |
1896 x_icon (f, parms); | |
1897 x_make_gc (f); | |
1898 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1899 /* We need to do this after creating the X window, so that the |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1900 icon-creation functions can say whose icon they're describing. */ |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1901 x_default_parameter (f, parms, Qicon_type, Qnil, |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1902 "iconType", "IconType", symbol); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1903 |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1904 x_default_parameter (f, parms, Qauto_raise, Qnil, |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1905 "autoRaise", "AutoRaiseLower", boolean); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1906 x_default_parameter (f, parms, Qauto_lower, Qnil, |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1907 "autoLower", "AutoRaiseLower", boolean); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
1908 x_default_parameter (f, parms, Qcursor_type, Qbox, |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
1909 "cursorType", "CursorType", symbol); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1910 |
771 | 1911 /* Dimensions, especially f->height, must be done via change_frame_size. |
389 | 1912 Change will not be effected unless different from the current |
771 | 1913 f->height. */ |
1914 width = f->width; | |
1915 height = f->height; | |
1916 f->height = f->width = 0; | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1917 change_frame_size (f, height, width, 1, 0); |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1918 |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1919 x_default_parameter (f, parms, Qmenu_bar_lines, make_number (0), |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1920 "menuBarLines", "MenuBarLines", number); |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1921 |
389 | 1922 BLOCK_INPUT; |
771 | 1923 x_wm_set_size_hint (f, window_prompting); |
389 | 1924 UNBLOCK_INPUT; |
1925 | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1926 tem = x_get_arg (parms, Qunsplittable, 0, 0, boolean); |
771 | 1927 f->no_split = minibuffer_only || EQ (tem, Qt); |
389 | 1928 |
2136
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1929 /* Make the window appear on the frame and enable display, |
17ab6ed0f98b
(x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents:
2067
diff
changeset
|
1930 unless the caller says not to. */ |
2294
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1931 { |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1932 Lisp_Object visibility = x_get_arg (parms, Qvisibility, 0, 0, symbol); |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1933 |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1934 if (EQ (visibility, Qunbound)) |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1935 visibility = Qt; |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1936 |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1937 if (EQ (visibility, Qicon)) |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1938 x_iconify_frame (f); |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1939 else if (! NILP (visibility)) |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1940 x_make_frame_visible (f); |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1941 else |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1942 /* Must have been Qnil. */ |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1943 ; |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
1944 } |
771 | 1945 |
1946 return frame; | |
389 | 1947 #else /* X10 */ |
771 | 1948 struct frame *f; |
1949 Lisp_Object frame, tem; | |
389 | 1950 Lisp_Object name; |
1951 int pixelwidth, pixelheight; | |
1952 Cursor cursor; | |
1953 int height, width; | |
1954 Window parent; | |
1955 Pixmap temp; | |
1956 int minibuffer_only = 0; | |
1957 Lisp_Object vscroll, hscroll; | |
1958 | |
1959 if (x_current_display == 0) | |
1960 error ("X windows are not in use or not initialized"); | |
1961 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1962 name = Fassq (Qname, parms); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1963 |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
1964 tem = x_get_arg (parms, Qminibuffer, 0, 0, symbol); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1965 if (EQ (tem, Qnone)) |
771 | 1966 f = make_frame_without_minibuffer (Qnil); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1967 else if (EQ (tem, Qonly)) |
389 | 1968 { |
771 | 1969 f = make_minibuffer_frame (); |
389 | 1970 minibuffer_only = 1; |
1971 } | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1972 else if (EQ (tem, Qnil) || EQ (tem, Qunbound)) |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1973 f = make_frame (1); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
1974 else |
771 | 1975 f = make_frame_without_minibuffer (tem); |
389 | 1976 |
1977 parent = ROOT_WINDOW; | |
1978 | |
771 | 1979 XSET (frame, Lisp_Frame, f); |
1980 f->output_method = output_x_window; | |
1981 f->display.x = (struct x_display *) xmalloc (sizeof (struct x_display)); | |
1982 bzero (f->display.x, sizeof (struct x_display)); | |
389 | 1983 |
1984 /* Some temprorary default values for height and width. */ | |
1985 width = 80; | |
1986 height = 40; | |
771 | 1987 f->display.x->left_pos = -1; |
1988 f->display.x->top_pos = -1; | |
1989 | |
1990 /* Give the frame a default name (which may be overridden with PARMS). */ | |
389 | 1991 |
1992 strncpy (iconidentity, ICONTAG, MAXICID); | |
1993 if (gethostname (&iconidentity[sizeof (ICONTAG) - 1], | |
1994 (MAXICID - 1) - sizeof (ICONTAG))) | |
1995 iconidentity[sizeof (ICONTAG) - 2] = '\0'; | |
771 | 1996 f->name = build_string (iconidentity); |
389 | 1997 |
1998 /* Extract some window parameters from the supplied values. | |
1999 These are the parameters that affect window geometry. */ | |
2000 | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2001 tem = x_get_arg (parms, Qfont, "BodyFont", 0, string); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2002 if (EQ (tem, Qunbound)) |
389 | 2003 tem = build_string ("9x15"); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2004 x_set_font (f, tem, Qnil); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2005 x_default_parameter (f, parms, Qborder_color, |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2006 build_string ("black"), "Border", 0, string); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2007 x_default_parameter (f, parms, Qbackground_color, |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2008 build_string ("white"), "Background", 0, string); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2009 x_default_parameter (f, parms, Qforeground_color, |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2010 build_string ("black"), "Foreground", 0, string); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2011 x_default_parameter (f, parms, Qmouse_color, |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2012 build_string ("black"), "Mouse", 0, string); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2013 x_default_parameter (f, parms, Qcursor_color, |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2014 build_string ("black"), "Cursor", 0, string); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2015 x_default_parameter (f, parms, Qborder_width, |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2016 make_number (2), "BorderWidth", 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2017 x_default_parameter (f, parms, Qinternal_border_width, |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2018 make_number (4), "InternalBorderWidth", 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2019 x_default_parameter (f, parms, Qauto_raise, |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2020 Qnil, "AutoRaise", 0, boolean); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2021 |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2022 hscroll = EQ (x_get_arg (parms, Qhorizontal_scroll_bar, 0, 0, boolean), Qt); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2023 vscroll = EQ (x_get_arg (parms, Qvertical_scroll_bar, 0, 0, boolean), Qt); |
389 | 2024 |
771 | 2025 if (f->display.x->internal_border_width < 0) |
2026 f->display.x->internal_border_width = 0; | |
389 | 2027 |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2028 tem = x_get_arg (parms, Qwindow_id, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2029 if (!EQ (tem, Qunbound)) |
389 | 2030 { |
2031 WINDOWINFO_TYPE wininfo; | |
2032 int nchildren; | |
2033 Window *children, root; | |
2034 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2035 CHECK_NUMBER (tem, 0); |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
2036 FRAME_X_WINDOW (f) = (Window) XINT (tem); |
389 | 2037 |
2038 BLOCK_INPUT; | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
2039 XGetWindowInfo (FRAME_X_WINDOW (f), &wininfo); |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
2040 XQueryTree (FRAME_X_WINDOW (f), &parent, &nchildren, &children); |
389 | 2041 free (children); |
2042 UNBLOCK_INPUT; | |
2043 | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2044 height = PIXEL_TO_CHAR_HEIGHT (f, wininfo.height); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2045 width = PIXEL_TO_CHAR_WIDTH (f, wininfo.width); |
771 | 2046 f->display.x->left_pos = wininfo.x; |
2047 f->display.x->top_pos = wininfo.y; | |
1719
48f539ac6921
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1657
diff
changeset
|
2048 FRAME_SET_VISIBILITY (f, wininfo.mapped != 0); |
771 | 2049 f->display.x->border_width = wininfo.bdrwidth; |
2050 f->display.x->parent_desc = parent; | |
389 | 2051 } |
2052 else | |
2053 { | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2054 tem = x_get_arg (parms, Qparent_id, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2055 if (!EQ (tem, Qunbound)) |
389 | 2056 { |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2057 CHECK_NUMBER (tem, 0); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2058 parent = (Window) XINT (tem); |
389 | 2059 } |
771 | 2060 f->display.x->parent_desc = parent; |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2061 tem = x_get_arg (parms, Qheight, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2062 if (EQ (tem, Qunbound)) |
389 | 2063 { |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2064 tem = x_get_arg (parms, Qwidth, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2065 if (EQ (tem, Qunbound)) |
389 | 2066 { |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2067 tem = x_get_arg (parms, Qtop, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2068 if (EQ (tem, Qunbound)) |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2069 tem = x_get_arg (parms, Qleft, 0, 0, number); |
389 | 2070 } |
2071 } | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2072 /* Now TEM is Qunbound if no edge or size was specified. |
389 | 2073 In that case, we must do rubber-banding. */ |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2074 if (EQ (tem, Qunbound)) |
389 | 2075 { |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2076 tem = x_get_arg (parms, Qgeometry, 0, 0, number); |
771 | 2077 x_rubber_band (f, |
2078 &f->display.x->left_pos, &f->display.x->top_pos, | |
389 | 2079 &width, &height, |
2080 (XTYPE (tem) == Lisp_String | |
2081 ? (char *) XSTRING (tem)->data : ""), | |
771 | 2082 XSTRING (f->name)->data, |
485 | 2083 !NILP (hscroll), !NILP (vscroll)); |
389 | 2084 } |
2085 else | |
2086 { | |
2087 /* Here if at least one edge or size was specified. | |
2088 Demand that they all were specified, and use them. */ | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2089 tem = x_get_arg (parms, Qheight, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2090 if (EQ (tem, Qunbound)) |
389 | 2091 error ("Height not specified"); |
2092 CHECK_NUMBER (tem, 0); | |
2093 height = XINT (tem); | |
2094 | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2095 tem = x_get_arg (parms, Qwidth, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2096 if (EQ (tem, Qunbound)) |
389 | 2097 error ("Width not specified"); |
2098 CHECK_NUMBER (tem, 0); | |
2099 width = XINT (tem); | |
2100 | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2101 tem = x_get_arg (parms, Qtop, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2102 if (EQ (tem, Qunbound)) |
389 | 2103 error ("Top position not specified"); |
2104 CHECK_NUMBER (tem, 0); | |
771 | 2105 f->display.x->left_pos = XINT (tem); |
389 | 2106 |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2107 tem = x_get_arg (parms, Qleft, 0, 0, number); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2108 if (EQ (tem, Qunbound)) |
389 | 2109 error ("Left position not specified"); |
2110 CHECK_NUMBER (tem, 0); | |
771 | 2111 f->display.x->top_pos = XINT (tem); |
389 | 2112 } |
2113 | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2114 pixelwidth = CHAR_TO_PIXEL_WIDTH (f, width); |
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2115 pixelheight = CHAR_TO_PIXEL_HEIGHT (f, height); |
389 | 2116 |
2117 BLOCK_INPUT; | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
2118 FRAME_X_WINDOW (f) |
389 | 2119 = XCreateWindow (parent, |
771 | 2120 f->display.x->left_pos, /* Absolute horizontal offset */ |
2121 f->display.x->top_pos, /* Absolute Vertical offset */ | |
389 | 2122 pixelwidth, pixelheight, |
771 | 2123 f->display.x->border_width, |
389 | 2124 BLACK_PIX_DEFAULT, WHITE_PIX_DEFAULT); |
2125 UNBLOCK_INPUT; | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
2126 if (FRAME_X_WINDOW (f) == 0) |
389 | 2127 error ("Unable to create window."); |
2128 } | |
2129 | |
2130 /* Install the now determined height and width | |
2131 in the windows and in phys_lines and desired_lines. */ | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2132 change_frame_size (f, height, width, 1, 0); |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
2133 XSelectInput (FRAME_X_WINDOW (f), KeyPressed | ExposeWindow |
389 | 2134 | ButtonPressed | ButtonReleased | ExposeRegion | ExposeCopy |
2135 | EnterWindow | LeaveWindow | UnmapWindow ); | |
771 | 2136 x_set_resize_hint (f); |
389 | 2137 |
2138 /* Tell the server the window's default name. */ | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
2139 XStoreName (XDISPLAY FRAME_X_WINDOW (f), XSTRING (f->name)->data); |
708 | 2140 |
389 | 2141 /* Now override the defaults with all the rest of the specified |
2142 parms. */ | |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2143 tem = x_get_arg (parms, Qunsplittable, 0, 0, boolean); |
771 | 2144 f->no_split = minibuffer_only || EQ (tem, Qt); |
389 | 2145 |
2328
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
2146 /* Do not create an icon window if the caller says not to */ |
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
2147 if (!EQ (x_get_arg (parms, Qsuppress_icon, 0, 0, boolean), Qt) |
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
2148 || f->display.x->parent_desc != ROOT_WINDOW) |
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
2149 { |
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
2150 x_text_icon (f, iconidentity); |
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
2151 x_default_parameter (f, parms, Qicon_type, Qnil, |
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
2152 "BitmapIcon", 0, symbol); |
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
2153 } |
389 | 2154 |
2155 /* Tell the X server the previously set values of the | |
2156 background, border and mouse colors; also create the mouse cursor. */ | |
2157 BLOCK_INPUT; | |
771 | 2158 temp = XMakeTile (f->display.x->background_pixel); |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
2159 XChangeBackground (FRAME_X_WINDOW (f), temp); |
389 | 2160 XFreePixmap (temp); |
2161 UNBLOCK_INPUT; | |
771 | 2162 x_set_border_pixel (f, f->display.x->border_pixel); |
2163 | |
2164 x_set_mouse_color (f, Qnil, Qnil); | |
389 | 2165 |
2166 /* Now override the defaults with all the rest of the specified parms. */ | |
2167 | |
771 | 2168 Fmodify_frame_parameters (frame, parms); |
389 | 2169 |
771 | 2170 /* Make the window appear on the frame and enable display. */ |
2294
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2171 { |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2172 Lisp_Object visibility = x_get_arg (parms, Qvisibility, 0, 0, symbol); |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2173 |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2174 if (EQ (visibility, Qunbound)) |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2175 visibility = Qt; |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2176 |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2177 if (! EQ (visibility, Qicon) |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2178 && ! NILP (visibility)) |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2179 x_make_window_visible (f); |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2180 } |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
2181 |
1786
5179baee010b
* xfns.c (Fx_create_frame): After mapping the frame, call
Jim Blandy <jimb@redhat.com>
parents:
1733
diff
changeset
|
2182 SET_FRAME_GARBAGED (f); |
771 | 2183 |
2184 return frame; | |
389 | 2185 #endif /* X10 */ |
2186 } | |
2187 | |
771 | 2188 DEFUN ("focus-frame", Ffocus_frame, Sfocus_frame, 1, 1, 0, |
2189 "Set the focus on FRAME.") | |
2190 (frame) | |
2191 Lisp_Object frame; | |
389 | 2192 { |
771 | 2193 CHECK_LIVE_FRAME (frame, 0); |
2194 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
2195 if (FRAME_X_P (XFRAME (frame))) |
389 | 2196 { |
2197 BLOCK_INPUT; | |
771 | 2198 x_focus_on_frame (XFRAME (frame)); |
389 | 2199 UNBLOCK_INPUT; |
771 | 2200 return frame; |
389 | 2201 } |
2202 | |
2203 return Qnil; | |
2204 } | |
2205 | |
771 | 2206 DEFUN ("unfocus-frame", Funfocus_frame, Sunfocus_frame, 0, 0, 0, |
2207 "If a frame has been focused, release it.") | |
389 | 2208 () |
2209 { | |
771 | 2210 if (x_focus_frame) |
389 | 2211 { |
2212 BLOCK_INPUT; | |
771 | 2213 x_unfocus_frame (x_focus_frame); |
389 | 2214 UNBLOCK_INPUT; |
2215 } | |
2216 | |
2217 return Qnil; | |
2218 } | |
2219 | |
2220 #ifndef HAVE_X11 | |
2221 /* Computes an X-window size and position either from geometry GEO | |
2222 or with the mouse. | |
2223 | |
771 | 2224 F is a frame. It specifies an X window which is used to |
389 | 2225 determine which display to compute for. Its font, borders |
2226 and colors control how the rectangle will be displayed. | |
2227 | |
2228 X and Y are where to store the positions chosen. | |
2229 WIDTH and HEIGHT are where to store the sizes chosen. | |
2230 | |
2231 GEO is the geometry that may specify some of the info. | |
2232 STR is a prompt to display. | |
2233 HSCROLL and VSCROLL say whether we have horiz and vert scroll bars. */ | |
2234 | |
2235 int | |
771 | 2236 x_rubber_band (f, x, y, width, height, geo, str, hscroll, vscroll) |
2237 struct frame *f; | |
389 | 2238 int *x, *y, *width, *height; |
2239 char *geo; | |
2240 char *str; | |
2241 int hscroll, vscroll; | |
2242 { | |
2243 OpaqueFrame frame; | |
2244 Window tempwindow; | |
2245 WindowInfo wininfo; | |
2246 int border_color; | |
2247 int background_color; | |
2248 Lisp_Object tem; | |
2249 int mask; | |
2250 | |
2251 BLOCK_INPUT; | |
2252 | |
771 | 2253 background_color = f->display.x->background_pixel; |
2254 border_color = f->display.x->border_pixel; | |
2255 | |
2256 frame.bdrwidth = f->display.x->border_width; | |
389 | 2257 frame.border = XMakeTile (border_color); |
2258 frame.background = XMakeTile (background_color); | |
2259 tempwindow = XCreateTerm (str, "emacs", geo, default_window, &frame, 10, 5, | |
771 | 2260 (2 * f->display.x->internal_border_width |
389 | 2261 + (vscroll ? VSCROLL_WIDTH : 0)), |
771 | 2262 (2 * f->display.x->internal_border_width |
389 | 2263 + (hscroll ? HSCROLL_HEIGHT : 0)), |
771 | 2264 width, height, f->display.x->font, |
2265 FONT_WIDTH (f->display.x->font), | |
2266 FONT_HEIGHT (f->display.x->font)); | |
389 | 2267 XFreePixmap (frame.border); |
2268 XFreePixmap (frame.background); | |
2269 | |
2270 if (tempwindow != 0) | |
2271 { | |
2272 XQueryWindow (tempwindow, &wininfo); | |
2273 XDestroyWindow (tempwindow); | |
2274 *x = wininfo.x; | |
2275 *y = wininfo.y; | |
2276 } | |
2277 | |
2278 /* Coordinates we got are relative to the root window. | |
2279 Convert them to coordinates relative to desired parent window | |
2280 by scanning from there up to the root. */ | |
771 | 2281 tempwindow = f->display.x->parent_desc; |
389 | 2282 while (tempwindow != ROOT_WINDOW) |
2283 { | |
2284 int nchildren; | |
2285 Window *children; | |
2286 XQueryWindow (tempwindow, &wininfo); | |
2287 *x -= wininfo.x; | |
2288 *y -= wininfo.y; | |
2289 XQueryTree (tempwindow, &tempwindow, &nchildren, &children); | |
2290 free (children); | |
2291 } | |
2292 | |
2293 UNBLOCK_INPUT; | |
2294 return tempwindow != 0; | |
2295 } | |
2296 #endif /* not HAVE_X11 */ | |
2297 | |
2328
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
2298 DEFUN ("x-color-defined-p", Fx_color_defined_p, Sx_color_defined_p, 1, 1, 0, |
389 | 2299 "Return t if the current X display supports the color named COLOR.") |
2300 (color) | |
2301 Lisp_Object color; | |
2302 { | |
2303 Color foo; | |
2304 | |
2305 CHECK_STRING (color, 0); | |
2306 | |
2307 if (defined_color (XSTRING (color)->data, &foo)) | |
2308 return Qt; | |
2309 else | |
2310 return Qnil; | |
2311 } | |
2312 | |
2277
773e47f29c5a
(Fx_display_color_p): Renamed from Fx_color_display_p.
Richard M. Stallman <rms@gnu.org>
parents:
2276
diff
changeset
|
2313 DEFUN ("x-display-color-p", Fx_display_color_p, Sx_display_color_p, 0, 0, 0, |
773e47f29c5a
(Fx_display_color_p): Renamed from Fx_color_display_p.
Richard M. Stallman <rms@gnu.org>
parents:
2276
diff
changeset
|
2314 "Return t if the X screen currently in use supports color.") |
389 | 2315 () |
2316 { | |
1528
924c8a609582
* xfns.c (x_decode_color, Fx_color_display_p): x_screen_planes is
Jim Blandy <jimb@redhat.com>
parents:
1438
diff
changeset
|
2317 if (x_screen_planes <= 2) |
389 | 2318 return Qnil; |
2319 | |
2320 switch (screen_visual->class) | |
2321 { | |
2322 case StaticColor: | |
2323 case PseudoColor: | |
2324 case TrueColor: | |
2325 case DirectColor: | |
2326 return Qt; | |
2327 | |
2328 default: | |
2329 return Qnil; | |
2330 } | |
2331 } | |
2332 | |
2276
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2333 DEFUN ("x-display-pixel-width", Fx_display_pixel_width, Sx_display_pixel_width, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2334 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2335 "Returns the width in pixels of the display FRAME is on.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2336 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2337 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2338 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2339 Display *dpy = x_current_display; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2340 return make_number (DisplayWidth (dpy, DefaultScreen (dpy))); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2341 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2342 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2343 DEFUN ("x-display-pixel-height", Fx_display_pixel_height, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2344 Sx_display_pixel_height, 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2345 "Returns the height in pixels of the display FRAME is on.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2346 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2347 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2348 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2349 Display *dpy = x_current_display; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2350 return make_number (DisplayHeight (dpy, DefaultScreen (dpy))); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2351 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2352 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2353 DEFUN ("x-display-planes", Fx_display_planes, Sx_display_planes, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2354 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2355 "Returns the number of bitplanes of the display FRAME is on.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2356 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2357 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2358 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2359 Display *dpy = x_current_display; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2360 return make_number (DisplayPlanes (dpy, DefaultScreen (dpy))); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2361 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2362 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2363 DEFUN ("x-display-color-cells", Fx_display_color_cells, Sx_display_color_cells, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2364 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2365 "Returns the number of color cells of the display FRAME is on.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2366 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2367 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2368 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2369 Display *dpy = x_current_display; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2370 return make_number (DisplayCells (dpy, DefaultScreen (dpy))); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2371 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2372 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2373 DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2374 "Returns the vendor ID string of the X server FRAME is on.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2375 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2376 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2377 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2378 Display *dpy = x_current_display; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2379 char *vendor; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2380 vendor = ServerVendor (dpy); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2381 if (! vendor) vendor = ""; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2382 return build_string (vendor); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2383 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2384 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2385 DEFUN ("x-server-version", Fx_server_version, Sx_server_version, 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2386 "Returns the version numbers of the X server in use.\n\ |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2387 The value is a list of three integers: the major and minor\n\ |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2388 version numbers of the X Protocol in use, and the vendor-specific release\n\ |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2389 number. See also the variable `x-server-vendor'.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2390 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2391 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2392 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2393 Display *dpy = x_current_display; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2394 return Fcons (make_number (ProtocolVersion (dpy)), |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2395 Fcons (make_number (ProtocolRevision (dpy)), |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2396 Fcons (make_number (VendorRelease (dpy)), Qnil))); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2397 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2398 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2399 DEFUN ("x-display-screens", Fx_display_screens, Sx_display_screens, 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2400 "Returns the number of screens on the X server FRAME is on.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2401 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2402 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2403 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2404 return make_number (ScreenCount (x_current_display)); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2405 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2406 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2407 DEFUN ("x-display-mm-height", Fx_display_mm_height, Sx_display_mm_height, 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2408 "Returns the height in millimeters of the X screen FRAME is on.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2409 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2410 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2411 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2412 return make_number (HeightMMOfScreen (x_screen)); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2413 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2414 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2415 DEFUN ("x-display-mm-width", Fx_display_mm_width, Sx_display_mm_width, 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2416 "Returns the width in millimeters of the X screen FRAME is on.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2417 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2418 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2419 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2420 return make_number (WidthMMOfScreen (x_screen)); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2421 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2422 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2423 DEFUN ("x-display-backing-store", Fx_display_backing_store, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2424 Sx_display_backing_store, 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2425 "Returns an indication of whether the X screen FRAME is on does backing store.\n\ |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2426 The value may be `always', `when-mapped', or `not-useful'.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2427 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2428 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2429 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2430 switch (DoesBackingStore (x_screen)) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2431 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2432 case Always: |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2433 return intern ("always"); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2434 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2435 case WhenMapped: |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2436 return intern ("when-mapped"); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2437 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2438 case NotUseful: |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2439 return intern ("not-useful"); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2440 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2441 default: |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2442 error ("Strange value for BackingStore parameter of screen"); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2443 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2444 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2445 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2446 DEFUN ("x-display-visual-class", Fx_display_visual_class, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2447 Sx_display_visual_class, 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2448 "Returns the visual class of the display `screen' is on.\n\ |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2449 The value is one of the symbols `static-gray', `gray-scale',\n\ |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2450 `static-color', `pseudo-color', `true-color', or `direct-color'.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2451 (screen) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2452 Lisp_Object screen; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2453 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2454 switch (screen_visual->class) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2455 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2456 case StaticGray: return (intern ("static-gray")); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2457 case GrayScale: return (intern ("gray-scale")); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2458 case StaticColor: return (intern ("static-color")); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2459 case PseudoColor: return (intern ("pseudo-color")); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2460 case TrueColor: return (intern ("true-color")); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2461 case DirectColor: return (intern ("direct-color")); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2462 default: |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2463 error ("Display has an unknown visual class"); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2464 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2465 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2466 |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2467 DEFUN ("x-display-save-under", Fx_display_save_under, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2468 Sx_display_save_under, 0, 1, 0, |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2469 "Returns t if the X screen FRAME is on supports the save-under feature.") |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2470 (frame) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2471 Lisp_Object frame; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2472 { |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2473 if (DoesSaveUnders (x_screen) == True) |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2474 return Qt; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2475 else |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2476 return Qnil; |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2477 } |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
2478 |
2067
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2479 x_pixel_width (f) |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2480 register struct frame *f; |
389 | 2481 { |
2067
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2482 return PIXEL_WIDTH (f); |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2483 } |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2484 |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2485 x_pixel_height (f) |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2486 register struct frame *f; |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2487 { |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2488 return PIXEL_HEIGHT (f); |
389 | 2489 } |
2490 | |
2067
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2491 x_char_width (f) |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2492 register struct frame *f; |
389 | 2493 { |
2067
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2494 return FONT_WIDTH (f->display.x->font); |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2495 } |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2496 |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2497 x_char_height (f) |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2498 register struct frame *f; |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2499 { |
0a353ddd4bf4
(Fx_pixel_width, Fx_pixel_height): Fns deleted.
Richard M. Stallman <rms@gnu.org>
parents:
1994
diff
changeset
|
2500 return FONT_HEIGHT (f->display.x->font); |
389 | 2501 } |
2502 | |
689
45401d45581d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
687
diff
changeset
|
2503 #if 0 /* These no longer seem like the right way to do things. */ |
45401d45581d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
687
diff
changeset
|
2504 |
771 | 2505 /* Draw a rectangle on the frame with left top corner including |
389 | 2506 the character specified by LEFT_CHAR and TOP_CHAR. The rectangle is |
2507 CHARS by LINES wide and long and is the color of the cursor. */ | |
2508 | |
2509 void | |
771 | 2510 x_rectangle (f, gc, left_char, top_char, chars, lines) |
2511 register struct frame *f; | |
389 | 2512 GC gc; |
2513 register int top_char, left_char, chars, lines; | |
2514 { | |
2515 int width; | |
2516 int height; | |
771 | 2517 int left = (left_char * FONT_WIDTH (f->display.x->font) |
2518 + f->display.x->internal_border_width); | |
2519 int top = (top_char * FONT_HEIGHT (f->display.x->font) | |
2520 + f->display.x->internal_border_width); | |
389 | 2521 |
2522 if (chars < 0) | |
771 | 2523 width = FONT_WIDTH (f->display.x->font) / 2; |
389 | 2524 else |
771 | 2525 width = FONT_WIDTH (f->display.x->font) * chars; |
389 | 2526 if (lines < 0) |
771 | 2527 height = FONT_HEIGHT (f->display.x->font) / 2; |
389 | 2528 else |
771 | 2529 height = FONT_HEIGHT (f->display.x->font) * lines; |
2530 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
2531 XDrawRectangle (x_current_display, FRAME_X_WINDOW (f), |
389 | 2532 gc, left, top, width, height); |
2533 } | |
2534 | |
2535 DEFUN ("x-draw-rectangle", Fx_draw_rectangle, Sx_draw_rectangle, 5, 5, 0, | |
771 | 2536 "Draw a rectangle on FRAME between coordinates specified by\n\ |
389 | 2537 numbers X0, Y0, X1, Y1 in the cursor pixel.") |
771 | 2538 (frame, X0, Y0, X1, Y1) |
2539 register Lisp_Object frame, X0, X1, Y0, Y1; | |
389 | 2540 { |
2541 register int x0, y0, x1, y1, top, left, n_chars, n_lines; | |
2542 | |
771 | 2543 CHECK_LIVE_FRAME (frame, 0); |
389 | 2544 CHECK_NUMBER (X0, 0); |
2545 CHECK_NUMBER (Y0, 1); | |
2546 CHECK_NUMBER (X1, 2); | |
2547 CHECK_NUMBER (Y1, 3); | |
2548 | |
2549 x0 = XINT (X0); | |
2550 x1 = XINT (X1); | |
2551 y0 = XINT (Y0); | |
2552 y1 = XINT (Y1); | |
2553 | |
2554 if (y1 > y0) | |
2555 { | |
2556 top = y0; | |
2557 n_lines = y1 - y0 + 1; | |
2558 } | |
2559 else | |
2560 { | |
2561 top = y1; | |
2562 n_lines = y0 - y1 + 1; | |
2563 } | |
2564 | |
2565 if (x1 > x0) | |
2566 { | |
2567 left = x0; | |
2568 n_chars = x1 - x0 + 1; | |
2569 } | |
2570 else | |
2571 { | |
2572 left = x1; | |
2573 n_chars = x0 - x1 + 1; | |
2574 } | |
2575 | |
2576 BLOCK_INPUT; | |
771 | 2577 x_rectangle (XFRAME (frame), XFRAME (frame)->display.x->cursor_gc, |
389 | 2578 left, top, n_chars, n_lines); |
2579 UNBLOCK_INPUT; | |
2580 | |
2581 return Qt; | |
2582 } | |
2583 | |
2584 DEFUN ("x-erase-rectangle", Fx_erase_rectangle, Sx_erase_rectangle, 5, 5, 0, | |
771 | 2585 "Draw a rectangle drawn on FRAME between coordinates\n\ |
389 | 2586 X0, Y0, X1, Y1 in the regular background-pixel.") |
771 | 2587 (frame, X0, Y0, X1, Y1) |
2588 register Lisp_Object frame, X0, Y0, X1, Y1; | |
389 | 2589 { |
2590 register int x0, y0, x1, y1, top, left, n_chars, n_lines; | |
2591 | |
771 | 2592 CHECK_FRAME (frame, 0); |
389 | 2593 CHECK_NUMBER (X0, 0); |
2594 CHECK_NUMBER (Y0, 1); | |
2595 CHECK_NUMBER (X1, 2); | |
2596 CHECK_NUMBER (Y1, 3); | |
2597 | |
2598 x0 = XINT (X0); | |
2599 x1 = XINT (X1); | |
2600 y0 = XINT (Y0); | |
2601 y1 = XINT (Y1); | |
2602 | |
2603 if (y1 > y0) | |
2604 { | |
2605 top = y0; | |
2606 n_lines = y1 - y0 + 1; | |
2607 } | |
2608 else | |
2609 { | |
2610 top = y1; | |
2611 n_lines = y0 - y1 + 1; | |
2612 } | |
2613 | |
2614 if (x1 > x0) | |
2615 { | |
2616 left = x0; | |
2617 n_chars = x1 - x0 + 1; | |
2618 } | |
2619 else | |
2620 { | |
2621 left = x1; | |
2622 n_chars = x0 - x1 + 1; | |
2623 } | |
2624 | |
2625 BLOCK_INPUT; | |
771 | 2626 x_rectangle (XFRAME (frame), XFRAME (frame)->display.x->reverse_gc, |
389 | 2627 left, top, n_chars, n_lines); |
2628 UNBLOCK_INPUT; | |
2629 | |
2630 return Qt; | |
2631 } | |
2632 | |
2633 /* Draw lines around the text region beginning at the character position | |
2634 TOP_X, TOP_Y and ending at BOTTOM_X and BOTTOM_Y. GC specifies the | |
2635 pixel and line characteristics. */ | |
2636 | |
771 | 2637 #define line_len(line) (FRAME_CURRENT_GLYPHS (f)->used[(line)]) |
389 | 2638 |
2639 static void | |
771 | 2640 outline_region (f, gc, top_x, top_y, bottom_x, bottom_y) |
2641 register struct frame *f; | |
389 | 2642 GC gc; |
2643 int top_x, top_y, bottom_x, bottom_y; | |
2644 { | |
771 | 2645 register int ibw = f->display.x->internal_border_width; |
2646 register int font_w = FONT_WIDTH (f->display.x->font); | |
2647 register int font_h = FONT_HEIGHT (f->display.x->font); | |
389 | 2648 int y = top_y; |
2649 int x = line_len (y); | |
2650 XPoint *pixel_points = (XPoint *) | |
2651 alloca (((bottom_y - top_y + 2) * 4) * sizeof (XPoint)); | |
2652 register XPoint *this_point = pixel_points; | |
2653 | |
2654 /* Do the horizontal top line/lines */ | |
2655 if (top_x == 0) | |
2656 { | |
2657 this_point->x = ibw; | |
2658 this_point->y = ibw + (font_h * top_y); | |
2659 this_point++; | |
2660 if (x == 0) | |
2661 this_point->x = ibw + (font_w / 2); /* Half-size for newline chars. */ | |
2662 else | |
2663 this_point->x = ibw + (font_w * x); | |
2664 this_point->y = (this_point - 1)->y; | |
2665 } | |
2666 else | |
2667 { | |
2668 this_point->x = ibw; | |
2669 this_point->y = ibw + (font_h * (top_y + 1)); | |
2670 this_point++; | |
2671 this_point->x = ibw + (font_w * top_x); | |
2672 this_point->y = (this_point - 1)->y; | |
2673 this_point++; | |
2674 this_point->x = (this_point - 1)->x; | |
2675 this_point->y = ibw + (font_h * top_y); | |
2676 this_point++; | |
2677 this_point->x = ibw + (font_w * x); | |
2678 this_point->y = (this_point - 1)->y; | |
2679 } | |
2680 | |
2681 /* Now do the right side. */ | |
2682 while (y < bottom_y) | |
2683 { /* Right vertical edge */ | |
2684 this_point++; | |
2685 this_point->x = (this_point - 1)->x; | |
2686 this_point->y = ibw + (font_h * (y + 1)); | |
2687 this_point++; | |
2688 | |
2689 y++; /* Horizontal connection to next line */ | |
2690 x = line_len (y); | |
2691 if (x == 0) | |
2692 this_point->x = ibw + (font_w / 2); | |
2693 else | |
2694 this_point->x = ibw + (font_w * x); | |
2695 | |
2696 this_point->y = (this_point - 1)->y; | |
2697 } | |
2698 | |
2699 /* Now do the bottom and connect to the top left point. */ | |
2700 this_point->x = ibw + (font_w * (bottom_x + 1)); | |
2701 | |
2702 this_point++; | |
2703 this_point->x = (this_point - 1)->x; | |
2704 this_point->y = ibw + (font_h * (bottom_y + 1)); | |
2705 this_point++; | |
2706 this_point->x = ibw; | |
2707 this_point->y = (this_point - 1)->y; | |
2708 this_point++; | |
2709 this_point->x = pixel_points->x; | |
2710 this_point->y = pixel_points->y; | |
2711 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
2712 XDrawLines (x_current_display, FRAME_X_WINDOW (f), |
389 | 2713 gc, pixel_points, |
2714 (this_point - pixel_points + 1), CoordModeOrigin); | |
2715 } | |
2716 | |
2717 DEFUN ("x-contour-region", Fx_contour_region, Sx_contour_region, 1, 1, 0, | |
2718 "Highlight the region between point and the character under the mouse\n\ | |
771 | 2719 selected frame.") |
389 | 2720 (event) |
2721 register Lisp_Object event; | |
2722 { | |
2723 register int x0, y0, x1, y1; | |
771 | 2724 register struct frame *f = selected_frame; |
389 | 2725 register int p1, p2; |
2726 | |
2727 CHECK_CONS (event, 0); | |
2728 | |
2729 BLOCK_INPUT; | |
2730 x0 = XINT (Fcar (Fcar (event))); | |
2731 y0 = XINT (Fcar (Fcdr (Fcar (event)))); | |
2732 | |
2733 /* If the mouse is past the end of the line, don't that area. */ | |
2734 /* ReWrite this... */ | |
2735 | |
771 | 2736 x1 = f->cursor_x; |
2737 y1 = f->cursor_y; | |
389 | 2738 |
2739 if (y1 > y0) /* point below mouse */ | |
771 | 2740 outline_region (f, f->display.x->cursor_gc, |
389 | 2741 x0, y0, x1, y1); |
2742 else if (y1 < y0) /* point above mouse */ | |
771 | 2743 outline_region (f, f->display.x->cursor_gc, |
389 | 2744 x1, y1, x0, y0); |
2745 else /* same line: draw horizontal rectangle */ | |
2746 { | |
2747 if (x1 > x0) | |
771 | 2748 x_rectangle (f, f->display.x->cursor_gc, |
389 | 2749 x0, y0, (x1 - x0 + 1), 1); |
2750 else if (x1 < x0) | |
771 | 2751 x_rectangle (f, f->display.x->cursor_gc, |
389 | 2752 x1, y1, (x0 - x1 + 1), 1); |
2753 } | |
2754 | |
2755 XFlush (x_current_display); | |
2756 UNBLOCK_INPUT; | |
2757 | |
2758 return Qnil; | |
2759 } | |
2760 | |
2761 DEFUN ("x-uncontour-region", Fx_uncontour_region, Sx_uncontour_region, 1, 1, 0, | |
2762 "Erase any highlighting of the region between point and the character\n\ | |
771 | 2763 at X, Y on the selected frame.") |
389 | 2764 (event) |
2765 register Lisp_Object event; | |
2766 { | |
2767 register int x0, y0, x1, y1; | |
771 | 2768 register struct frame *f = selected_frame; |
389 | 2769 |
2770 BLOCK_INPUT; | |
2771 x0 = XINT (Fcar (Fcar (event))); | |
2772 y0 = XINT (Fcar (Fcdr (Fcar (event)))); | |
771 | 2773 x1 = f->cursor_x; |
2774 y1 = f->cursor_y; | |
389 | 2775 |
2776 if (y1 > y0) /* point below mouse */ | |
771 | 2777 outline_region (f, f->display.x->reverse_gc, |
389 | 2778 x0, y0, x1, y1); |
2779 else if (y1 < y0) /* point above mouse */ | |
771 | 2780 outline_region (f, f->display.x->reverse_gc, |
389 | 2781 x1, y1, x0, y0); |
2782 else /* same line: draw horizontal rectangle */ | |
2783 { | |
2784 if (x1 > x0) | |
771 | 2785 x_rectangle (f, f->display.x->reverse_gc, |
389 | 2786 x0, y0, (x1 - x0 + 1), 1); |
2787 else if (x1 < x0) | |
771 | 2788 x_rectangle (f, f->display.x->reverse_gc, |
389 | 2789 x1, y1, (x0 - x1 + 1), 1); |
2790 } | |
2791 UNBLOCK_INPUT; | |
2792 | |
2793 return Qnil; | |
2794 } | |
2795 | |
2796 #if 0 | |
2797 int contour_begin_x, contour_begin_y; | |
2798 int contour_end_x, contour_end_y; | |
2799 int contour_npoints; | |
2800 | |
2801 /* Clip the top part of the contour lines down (and including) line Y_POS. | |
2802 If X_POS is in the middle (rather than at the end) of the line, drop | |
2803 down a line at that character. */ | |
2804 | |
2805 static void | |
2806 clip_contour_top (y_pos, x_pos) | |
2807 { | |
2808 register XPoint *begin = contour_lines[y_pos].top_left; | |
2809 register XPoint *end; | |
2810 register int npoints; | |
771 | 2811 register struct display_line *line = selected_frame->phys_lines[y_pos + 1]; |
389 | 2812 |
2813 if (x_pos >= line->len - 1) /* Draw one, straight horizontal line. */ | |
2814 { | |
2815 end = contour_lines[y_pos].top_right; | |
2816 npoints = (end - begin + 1); | |
2817 XDrawLines (x_current_display, contour_window, | |
2818 contour_erase_gc, begin_erase, npoints, CoordModeOrigin); | |
2819 | |
2820 bcopy (end, begin + 1, contour_last_point - end + 1); | |
2821 contour_last_point -= (npoints - 2); | |
2822 XDrawLines (x_current_display, contour_window, | |
2823 contour_erase_gc, begin, 2, CoordModeOrigin); | |
2824 XFlush (x_current_display); | |
2825 | |
2826 /* Now, update contour_lines structure. */ | |
2827 } | |
2828 /* ______. */ | |
2829 else /* |________*/ | |
2830 { | |
2831 register XPoint *p = begin + 1; | |
2832 end = contour_lines[y_pos].bottom_right; | |
2833 npoints = (end - begin + 1); | |
2834 XDrawLines (x_current_display, contour_window, | |
2835 contour_erase_gc, begin_erase, npoints, CoordModeOrigin); | |
2836 | |
2837 p->y = begin->y; | |
2838 p->x = ibw + (font_w * (x_pos + 1)); | |
2839 p++; | |
2840 p->y = begin->y + font_h; | |
2841 p->x = (p - 1)->x; | |
2842 bcopy (end, begin + 3, contour_last_point - end + 1); | |
2843 contour_last_point -= (npoints - 5); | |
2844 XDrawLines (x_current_display, contour_window, | |
2845 contour_erase_gc, begin, 4, CoordModeOrigin); | |
2846 XFlush (x_current_display); | |
2847 | |
2848 /* Now, update contour_lines structure. */ | |
2849 } | |
2850 } | |
2851 | |
2852 /* Erase the top horzontal lines of the contour, and then extend | |
2853 the contour upwards. */ | |
2854 | |
2855 static void | |
2856 extend_contour_top (line) | |
2857 { | |
2858 } | |
2859 | |
2860 static void | |
2861 clip_contour_bottom (x_pos, y_pos) | |
2862 int x_pos, y_pos; | |
2863 { | |
2864 } | |
2865 | |
2866 static void | |
2867 extend_contour_bottom (x_pos, y_pos) | |
2868 { | |
2869 } | |
2870 | |
2871 DEFUN ("x-select-region", Fx_select_region, Sx_select_region, 1, 1, "e", | |
2872 "") | |
2873 (event) | |
2874 Lisp_Object event; | |
2875 { | |
771 | 2876 register struct frame *f = selected_frame; |
2877 register int point_x = f->cursor_x; | |
2878 register int point_y = f->cursor_y; | |
389 | 2879 register int mouse_below_point; |
2880 register Lisp_Object obj; | |
2881 register int x_contour_x, x_contour_y; | |
2882 | |
2883 x_contour_x = x_mouse_x; | |
2884 x_contour_y = x_mouse_y; | |
2885 if (x_contour_y > point_y || (x_contour_y == point_y | |
2886 && x_contour_x > point_x)) | |
2887 { | |
2888 mouse_below_point = 1; | |
771 | 2889 outline_region (f, f->display.x->cursor_gc, point_x, point_y, |
389 | 2890 x_contour_x, x_contour_y); |
2891 } | |
2892 else | |
2893 { | |
2894 mouse_below_point = 0; | |
771 | 2895 outline_region (f, f->display.x->cursor_gc, x_contour_x, x_contour_y, |
389 | 2896 point_x, point_y); |
2897 } | |
2898 | |
2899 while (1) | |
2900 { | |
1096
d79192bacdce
(Fx_track_pointer): Pass new args to read_char.
Richard M. Stallman <rms@gnu.org>
parents:
1050
diff
changeset
|
2901 obj = read_char (-1, 0, 0, Qnil, 0); |
389 | 2902 if (XTYPE (obj) != Lisp_Cons) |
2903 break; | |
2904 | |
2905 if (mouse_below_point) | |
2906 { | |
2907 if (x_mouse_y <= point_y) /* Flipped. */ | |
2908 { | |
2909 mouse_below_point = 0; | |
2910 | |
771 | 2911 outline_region (f, f->display.x->reverse_gc, point_x, point_y, |
389 | 2912 x_contour_x, x_contour_y); |
771 | 2913 outline_region (f, f->display.x->cursor_gc, x_mouse_x, x_mouse_y, |
389 | 2914 point_x, point_y); |
2915 } | |
2916 else if (x_mouse_y < x_contour_y) /* Bottom clipped. */ | |
2917 { | |
2918 clip_contour_bottom (x_mouse_y); | |
2919 } | |
2920 else if (x_mouse_y > x_contour_y) /* Bottom extended. */ | |
2921 { | |
2922 extend_bottom_contour (x_mouse_y); | |
2923 } | |
2924 | |
2925 x_contour_x = x_mouse_x; | |
2926 x_contour_y = x_mouse_y; | |
2927 } | |
2928 else /* mouse above or same line as point */ | |
2929 { | |
2930 if (x_mouse_y >= point_y) /* Flipped. */ | |
2931 { | |
2932 mouse_below_point = 1; | |
2933 | |
771 | 2934 outline_region (f, f->display.x->reverse_gc, |
389 | 2935 x_contour_x, x_contour_y, point_x, point_y); |
771 | 2936 outline_region (f, f->display.x->cursor_gc, point_x, point_y, |
389 | 2937 x_mouse_x, x_mouse_y); |
2938 } | |
2939 else if (x_mouse_y > x_contour_y) /* Top clipped. */ | |
2940 { | |
2941 clip_contour_top (x_mouse_y); | |
2942 } | |
2943 else if (x_mouse_y < x_contour_y) /* Top extended. */ | |
2944 { | |
2945 extend_contour_top (x_mouse_y); | |
2946 } | |
2947 } | |
2948 } | |
2949 | |
1601
a371ec79bc31
* xfns.c (unread_command_char): Change name in extern declaration
Jim Blandy <jimb@redhat.com>
parents:
1528
diff
changeset
|
2950 unread_command_event = obj; |
389 | 2951 if (mouse_below_point) |
2952 { | |
2953 contour_begin_x = point_x; | |
2954 contour_begin_y = point_y; | |
2955 contour_end_x = x_contour_x; | |
2956 contour_end_y = x_contour_y; | |
2957 } | |
2958 else | |
2959 { | |
2960 contour_begin_x = x_contour_x; | |
2961 contour_begin_y = x_contour_y; | |
2962 contour_end_x = point_x; | |
2963 contour_end_y = point_y; | |
2964 } | |
2965 } | |
2966 #endif | |
2967 | |
2968 DEFUN ("x-horizontal-line", Fx_horizontal_line, Sx_horizontal_line, 1, 1, "e", | |
2969 "") | |
2970 (event) | |
2971 Lisp_Object event; | |
2972 { | |
2973 register Lisp_Object obj; | |
771 | 2974 struct frame *f = selected_frame; |
389 | 2975 register struct window *w = XWINDOW (selected_window); |
771 | 2976 register GC line_gc = f->display.x->cursor_gc; |
2977 register GC erase_gc = f->display.x->reverse_gc; | |
389 | 2978 #if 0 |
2979 char dash_list[] = {6, 4, 6, 4}; | |
2980 int dashes = 4; | |
2981 XGCValues gc_values; | |
2982 #endif | |
2983 register int previous_y; | |
771 | 2984 register int line = (x_mouse_y + 1) * FONT_HEIGHT (f->display.x->font) |
2985 + f->display.x->internal_border_width; | |
2986 register int left = f->display.x->internal_border_width | |
389 | 2987 + (w->left |
771 | 2988 * FONT_WIDTH (f->display.x->font)); |
389 | 2989 register int right = left + (w->width |
771 | 2990 * FONT_WIDTH (f->display.x->font)) |
2991 - f->display.x->internal_border_width; | |
389 | 2992 |
2993 #if 0 | |
2994 BLOCK_INPUT; | |
771 | 2995 gc_values.foreground = f->display.x->cursor_pixel; |
2996 gc_values.background = f->display.x->background_pixel; | |
389 | 2997 gc_values.line_width = 1; |
2998 gc_values.line_style = LineOnOffDash; | |
2999 gc_values.cap_style = CapRound; | |
3000 gc_values.join_style = JoinRound; | |
3001 | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3002 line_gc = XCreateGC (x_current_display, FRAME_X_WINDOW (f), |
389 | 3003 GCLineStyle | GCJoinStyle | GCCapStyle |
3004 | GCLineWidth | GCForeground | GCBackground, | |
3005 &gc_values); | |
3006 XSetDashes (x_current_display, line_gc, 0, dash_list, dashes); | |
771 | 3007 gc_values.foreground = f->display.x->background_pixel; |
3008 gc_values.background = f->display.x->foreground_pixel; | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3009 erase_gc = XCreateGC (x_current_display, FRAME_X_WINDOW (f), |
389 | 3010 GCLineStyle | GCJoinStyle | GCCapStyle |
3011 | GCLineWidth | GCForeground | GCBackground, | |
3012 &gc_values); | |
3013 XSetDashes (x_current_display, erase_gc, 0, dash_list, dashes); | |
3014 #endif | |
3015 | |
3016 while (1) | |
3017 { | |
3018 BLOCK_INPUT; | |
3019 if (x_mouse_y >= XINT (w->top) | |
3020 && x_mouse_y < XINT (w->top) + XINT (w->height) - 1) | |
3021 { | |
3022 previous_y = x_mouse_y; | |
771 | 3023 line = (x_mouse_y + 1) * FONT_HEIGHT (f->display.x->font) |
3024 + f->display.x->internal_border_width; | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3025 XDrawLine (x_current_display, FRAME_X_WINDOW (f), |
389 | 3026 line_gc, left, line, right, line); |
3027 } | |
3028 XFlushQueue (); | |
3029 UNBLOCK_INPUT; | |
3030 | |
3031 do | |
3032 { | |
1096
d79192bacdce
(Fx_track_pointer): Pass new args to read_char.
Richard M. Stallman <rms@gnu.org>
parents:
1050
diff
changeset
|
3033 obj = read_char (-1, 0, 0, Qnil, 0); |
389 | 3034 if ((XTYPE (obj) != Lisp_Cons) |
3035 || (! EQ (Fcar (Fcdr (Fcdr (obj))), | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3036 Qvertical_scroll_bar)) |
389 | 3037 || x_mouse_grabbed) |
3038 { | |
3039 BLOCK_INPUT; | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3040 XDrawLine (x_current_display, FRAME_X_WINDOW (f), |
389 | 3041 erase_gc, left, line, right, line); |
3042 UNBLOCK_INPUT; | |
1601
a371ec79bc31
* xfns.c (unread_command_char): Change name in extern declaration
Jim Blandy <jimb@redhat.com>
parents:
1528
diff
changeset
|
3043 unread_command_event = obj; |
389 | 3044 #if 0 |
3045 XFreeGC (x_current_display, line_gc); | |
3046 XFreeGC (x_current_display, erase_gc); | |
3047 #endif | |
3048 return Qnil; | |
3049 } | |
3050 } | |
3051 while (x_mouse_y == previous_y); | |
3052 | |
3053 BLOCK_INPUT; | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3054 XDrawLine (x_current_display, FRAME_X_WINDOW (f), |
389 | 3055 erase_gc, left, line, right, line); |
3056 UNBLOCK_INPUT; | |
3057 } | |
3058 } | |
687
e2b747dd6a6e
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
642
diff
changeset
|
3059 #endif |
389 | 3060 |
3061 /* Offset in buffer of character under the pointer, or 0. */ | |
3062 int mouse_buffer_offset; | |
3063 | |
3064 #if 0 | |
3065 /* These keep track of the rectangle following the pointer. */ | |
3066 int mouse_track_top, mouse_track_left, mouse_track_width; | |
3067 | |
3068 DEFUN ("x-track-pointer", Fx_track_pointer, Sx_track_pointer, 0, 0, 0, | |
3069 "Track the pointer.") | |
3070 () | |
3071 { | |
3072 static Cursor current_pointer_shape; | |
771 | 3073 FRAME_PTR f = x_mouse_frame; |
389 | 3074 |
3075 BLOCK_INPUT; | |
771 | 3076 if (EQ (Vmouse_frame_part, Qtext_part) |
3077 && (current_pointer_shape != f->display.x->nontext_cursor)) | |
389 | 3078 { |
3079 unsigned char c; | |
3080 struct buffer *buf; | |
3081 | |
771 | 3082 current_pointer_shape = f->display.x->nontext_cursor; |
389 | 3083 XDefineCursor (x_current_display, |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3084 FRAME_X_WINDOW (f), |
389 | 3085 current_pointer_shape); |
3086 | |
3087 buf = XBUFFER (XWINDOW (Vmouse_window)->buffer); | |
3088 c = *(BUF_CHAR_ADDRESS (buf, mouse_buffer_offset)); | |
3089 } | |
771 | 3090 else if (EQ (Vmouse_frame_part, Qmodeline_part) |
3091 && (current_pointer_shape != f->display.x->modeline_cursor)) | |
389 | 3092 { |
771 | 3093 current_pointer_shape = f->display.x->modeline_cursor; |
389 | 3094 XDefineCursor (x_current_display, |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3095 FRAME_X_WINDOW (f), |
389 | 3096 current_pointer_shape); |
3097 } | |
3098 | |
3099 XFlushQueue (); | |
3100 UNBLOCK_INPUT; | |
3101 } | |
3102 #endif | |
3103 | |
3104 #if 0 | |
3105 DEFUN ("x-track-pointer", Fx_track_pointer, Sx_track_pointer, 1, 1, "e", | |
3106 "Draw rectangle around character under mouse pointer, if there is one.") | |
3107 (event) | |
3108 Lisp_Object event; | |
3109 { | |
3110 struct window *w = XWINDOW (Vmouse_window); | |
771 | 3111 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
389 | 3112 struct buffer *b = XBUFFER (w->buffer); |
3113 Lisp_Object obj; | |
3114 | |
3115 if (! EQ (Vmouse_window, selected_window)) | |
3116 return Qnil; | |
3117 | |
3118 if (EQ (event, Qnil)) | |
3119 { | |
3120 int x, y; | |
3121 | |
771 | 3122 x_read_mouse_position (selected_frame, &x, &y); |
389 | 3123 } |
3124 | |
3125 BLOCK_INPUT; | |
3126 mouse_track_width = 0; | |
3127 mouse_track_left = mouse_track_top = -1; | |
3128 | |
3129 do | |
3130 { | |
3131 if ((x_mouse_x != mouse_track_left | |
3132 && (x_mouse_x < mouse_track_left | |
3133 || x_mouse_x > (mouse_track_left + mouse_track_width))) | |
3134 || x_mouse_y != mouse_track_top) | |
3135 { | |
3136 int hp = 0; /* Horizontal position */ | |
771 | 3137 int len = FRAME_CURRENT_GLYPHS (f)->used[x_mouse_y]; |
3138 int p = FRAME_CURRENT_GLYPHS (f)->bufp[x_mouse_y]; | |
389 | 3139 int tab_width = XINT (b->tab_width); |
485 | 3140 int ctl_arrow_p = !NILP (b->ctl_arrow); |
389 | 3141 unsigned char c; |
3142 int mode_line_vpos = XFASTINT (w->height) + XFASTINT (w->top) - 1; | |
3143 int in_mode_line = 0; | |
3144 | |
771 | 3145 if (! FRAME_CURRENT_GLYPHS (f)->enable[x_mouse_y]) |
389 | 3146 break; |
3147 | |
3148 /* Erase previous rectangle. */ | |
3149 if (mouse_track_width) | |
3150 { | |
771 | 3151 x_rectangle (f, f->display.x->reverse_gc, |
389 | 3152 mouse_track_left, mouse_track_top, |
3153 mouse_track_width, 1); | |
3154 | |
771 | 3155 if ((mouse_track_left == f->phys_cursor_x |
3156 || mouse_track_left == f->phys_cursor_x - 1) | |
3157 && mouse_track_top == f->phys_cursor_y) | |
389 | 3158 { |
771 | 3159 x_display_cursor (f, 1); |
389 | 3160 } |
3161 } | |
3162 | |
3163 mouse_track_left = x_mouse_x; | |
3164 mouse_track_top = x_mouse_y; | |
3165 mouse_track_width = 0; | |
3166 | |
3167 if (mouse_track_left > len) /* Past the end of line. */ | |
3168 goto draw_or_not; | |
3169 | |
3170 if (mouse_track_top == mode_line_vpos) | |
3171 { | |
3172 in_mode_line = 1; | |
3173 goto draw_or_not; | |
3174 } | |
3175 | |
3176 if (tab_width <= 0 || tab_width > 20) tab_width = 8; | |
3177 do | |
3178 { | |
3179 c = FETCH_CHAR (p); | |
771 | 3180 if (len == f->width && hp == len - 1 && c != '\n') |
389 | 3181 goto draw_or_not; |
3182 | |
3183 switch (c) | |
3184 { | |
3185 case '\t': | |
3186 mouse_track_width = tab_width - (hp % tab_width); | |
3187 p++; | |
3188 hp += mouse_track_width; | |
3189 if (hp > x_mouse_x) | |
3190 { | |
3191 mouse_track_left = hp - mouse_track_width; | |
3192 goto draw_or_not; | |
3193 } | |
3194 continue; | |
3195 | |
3196 case '\n': | |
3197 mouse_track_width = -1; | |
3198 goto draw_or_not; | |
3199 | |
3200 default: | |
3201 if (ctl_arrow_p && (c < 040 || c == 0177)) | |
3202 { | |
3203 if (p > ZV) | |
3204 goto draw_or_not; | |
3205 | |
3206 mouse_track_width = 2; | |
3207 p++; | |
3208 hp +=2; | |
3209 if (hp > x_mouse_x) | |
3210 { | |
3211 mouse_track_left = hp - mouse_track_width; | |
3212 goto draw_or_not; | |
3213 } | |
3214 } | |
3215 else | |
3216 { | |
3217 mouse_track_width = 1; | |
3218 p++; | |
3219 hp++; | |
3220 } | |
3221 continue; | |
3222 } | |
3223 } | |
3224 while (hp <= x_mouse_x); | |
3225 | |
3226 draw_or_not: | |
3227 if (mouse_track_width) /* Over text; use text pointer shape. */ | |
3228 { | |
3229 XDefineCursor (x_current_display, | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3230 FRAME_X_WINDOW (f), |
771 | 3231 f->display.x->text_cursor); |
3232 x_rectangle (f, f->display.x->cursor_gc, | |
389 | 3233 mouse_track_left, mouse_track_top, |
3234 mouse_track_width, 1); | |
3235 } | |
3236 else if (in_mode_line) | |
3237 XDefineCursor (x_current_display, | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3238 FRAME_X_WINDOW (f), |
771 | 3239 f->display.x->modeline_cursor); |
389 | 3240 else |
3241 XDefineCursor (x_current_display, | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3242 FRAME_X_WINDOW (f), |
771 | 3243 f->display.x->nontext_cursor); |
389 | 3244 } |
3245 | |
3246 XFlush (x_current_display); | |
3247 UNBLOCK_INPUT; | |
3248 | |
1096
d79192bacdce
(Fx_track_pointer): Pass new args to read_char.
Richard M. Stallman <rms@gnu.org>
parents:
1050
diff
changeset
|
3249 obj = read_char (-1, 0, 0, Qnil, 0); |
389 | 3250 BLOCK_INPUT; |
3251 } | |
3252 while (XTYPE (obj) == Lisp_Cons /* Mouse event */ | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3253 && EQ (Fcar (Fcdr (Fcdr (obj))), Qnil) /* Not scroll bar */ |
389 | 3254 && EQ (Vmouse_depressed, Qnil) /* Only motion events */ |
3255 && EQ (Vmouse_window, selected_window) /* In this window */ | |
771 | 3256 && x_mouse_frame); |
389 | 3257 |
1601
a371ec79bc31
* xfns.c (unread_command_char): Change name in extern declaration
Jim Blandy <jimb@redhat.com>
parents:
1528
diff
changeset
|
3258 unread_command_event = obj; |
389 | 3259 |
3260 if (mouse_track_width) | |
3261 { | |
771 | 3262 x_rectangle (f, f->display.x->reverse_gc, |
389 | 3263 mouse_track_left, mouse_track_top, |
3264 mouse_track_width, 1); | |
3265 mouse_track_width = 0; | |
771 | 3266 if ((mouse_track_left == f->phys_cursor_x |
3267 || mouse_track_left - 1 == f->phys_cursor_x) | |
3268 && mouse_track_top == f->phys_cursor_y) | |
389 | 3269 { |
771 | 3270 x_display_cursor (f, 1); |
389 | 3271 } |
3272 } | |
3273 XDefineCursor (x_current_display, | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3274 FRAME_X_WINDOW (f), |
771 | 3275 f->display.x->nontext_cursor); |
389 | 3276 XFlush (x_current_display); |
3277 UNBLOCK_INPUT; | |
3278 | |
3279 return Qnil; | |
3280 } | |
3281 #endif | |
3282 | |
3283 #if 0 | |
3284 #include "glyphs.h" | |
3285 | |
3286 /* Draw a pixmap specified by IMAGE_DATA of dimensions WIDTH and HEIGHT | |
771 | 3287 on the frame F at position X, Y. */ |
3288 | |
3289 x_draw_pixmap (f, x, y, image_data, width, height) | |
3290 struct frame *f; | |
389 | 3291 int x, y, width, height; |
3292 char *image_data; | |
3293 { | |
3294 Pixmap image; | |
3295 | |
3296 image = XCreateBitmapFromData (x_current_display, | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3297 FRAME_X_WINDOW (f), image_data, |
389 | 3298 width, height); |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3299 XCopyPlane (x_current_display, image, FRAME_X_WINDOW (f), |
771 | 3300 f->display.x->normal_gc, 0, 0, width, height, x, y); |
389 | 3301 } |
3302 #endif | |
3303 | |
3304 #if 0 | |
3305 | |
3306 #ifdef HAVE_X11 | |
3307 #define XMouseEvent XEvent | |
3308 #define WhichMouseButton xbutton.button | |
3309 #define MouseWindow xbutton.window | |
3310 #define MouseX xbutton.x | |
3311 #define MouseY xbutton.y | |
3312 #define MouseTime xbutton.time | |
3313 #define ButtonReleased ButtonRelease | |
3314 #define ButtonPressed ButtonPress | |
3315 #else | |
3316 #define XMouseEvent XButtonEvent | |
3317 #define WhichMouseButton detail | |
3318 #define MouseWindow window | |
3319 #define MouseX x | |
3320 #define MouseY y | |
3321 #define MouseTime time | |
3322 #endif /* X11 */ | |
3323 | |
3324 DEFUN ("x-mouse-events", Fx_mouse_events, Sx_mouse_events, 0, 0, 0, | |
3325 "Return number of pending mouse events from X window system.") | |
3326 () | |
3327 { | |
3328 return make_number (queue_event_count (&x_mouse_queue)); | |
3329 } | |
3330 | |
3331 /* Encode the mouse button events in the form expected by the | |
3332 mouse code in Lisp. For X11, this means moving the masks around. */ | |
3333 | |
3334 static int | |
3335 encode_mouse_button (mouse_event) | |
3336 XMouseEvent mouse_event; | |
3337 { | |
3338 register int event_code; | |
3339 register char key_mask; | |
3340 | |
3341 event_code = mouse_event.detail & 3; | |
3342 key_mask = (mouse_event.detail >> 8) & 0xf0; | |
3343 event_code |= key_mask >> 1; | |
3344 if (mouse_event.type == ButtonReleased) event_code |= 0x04; | |
3345 return event_code; | |
3346 } | |
3347 | |
3348 DEFUN ("x-get-mouse-event", Fx_get_mouse_event, Sx_get_mouse_event, | |
3349 0, 1, 0, | |
3350 "Get next mouse event out of mouse event buffer.\n\ | |
3351 Optional ARG non-nil means return nil immediately if no pending event;\n\ | |
3352 otherwise, wait for an event. Returns a four-part list:\n\ | |
771 | 3353 ((X-POS Y-POS) WINDOW FRAME-PART KEYSEQ TIMESTAMP).\n\ |
3354 Normally X-POS and Y-POS are the position of the click on the frame\n\ | |
389 | 3355 (measured in characters and lines), and WINDOW is the window clicked in.\n\ |
3356 KEYSEQ is a string, the key sequence to be looked up in the mouse maps.\n\ | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3357 If FRAME-PART is non-nil, the event was on a scroll bar;\n\ |
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3358 then Y-POS is really the total length of the scroll bar, while X-POS is\n\ |
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3359 the relative position of the scroll bar's value within that total length,\n\ |
389 | 3360 and a third element OFFSET appears in that list: the height of the thumb-up\n\ |
3361 area at the top of the scroll bar.\n\ | |
771 | 3362 FRAME-PART is one of the following symbols:\n\ |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3363 `vertical-scroll-bar', `vertical-thumbup', `vertical-thumbdown',\n\ |
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3364 `horizontal-scroll-bar', `horizontal-thumbleft', `horizontal-thumbright'.\n\ |
389 | 3365 TIMESTAMP is the lower 23 bits of the X-server's timestamp for\n\ |
3366 the mouse event.") | |
3367 (arg) | |
3368 Lisp_Object arg; | |
3369 { | |
3370 XMouseEvent xrep; | |
3371 register int com_letter; | |
3372 register Lisp_Object tempx; | |
3373 register Lisp_Object tempy; | |
3374 Lisp_Object part, pos, timestamp; | |
3375 int prefix; | |
771 | 3376 struct frame *f; |
389 | 3377 |
3378 int tem; | |
3379 | |
3380 while (1) | |
3381 { | |
3382 BLOCK_INPUT; | |
3383 tem = dequeue_event (&xrep, &x_mouse_queue); | |
3384 UNBLOCK_INPUT; | |
3385 | |
3386 if (tem) | |
3387 { | |
3388 switch (xrep.type) | |
3389 { | |
3390 case ButtonPressed: | |
3391 case ButtonReleased: | |
3392 | |
3393 com_letter = encode_mouse_button (xrep); | |
3394 mouse_timestamp = xrep.MouseTime; | |
3395 | |
771 | 3396 if ((f = x_window_to_frame (xrep.MouseWindow)) != 0) |
389 | 3397 { |
771 | 3398 Lisp_Object frame; |
389 | 3399 |
771 | 3400 if (f->display.x->icon_desc == xrep.MouseWindow) |
389 | 3401 { |
771 | 3402 x_make_frame_visible (f); |
389 | 3403 continue; |
3404 } | |
3405 | |
3406 XSET (tempx, Lisp_Int, | |
771 | 3407 min (f->width-1, max (0, (xrep.MouseX - f->display.x->internal_border_width)/FONT_WIDTH (f->display.x->font)))); |
389 | 3408 XSET (tempy, Lisp_Int, |
771 | 3409 min (f->height-1, max (0, (xrep.MouseY - f->display.x->internal_border_width)/FONT_HEIGHT (f->display.x->font)))); |
389 | 3410 XSET (timestamp, Lisp_Int, (xrep.MouseTime & 0x7fffff)); |
771 | 3411 XSET (frame, Lisp_Frame, f); |
389 | 3412 |
3413 pos = Fcons (tempx, Fcons (tempy, Qnil)); | |
3414 Vmouse_window | |
771 | 3415 = Flocate_window_from_coordinates (frame, pos); |
389 | 3416 |
3417 Vmouse_event | |
3418 = Fcons (pos, | |
3419 Fcons (Vmouse_window, | |
3420 Fcons (Qnil, | |
3421 Fcons (Fchar_to_string (make_number (com_letter)), | |
3422 Fcons (timestamp, Qnil))))); | |
3423 return Vmouse_event; | |
3424 } | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3425 else if ((f = x_window_to_scroll_bar (xrep.MouseWindow, &part, &prefix)) != 0) |
389 | 3426 { |
3427 int pos, len; | |
3428 Lisp_Object keyseq; | |
3429 char *partname; | |
3430 | |
3431 keyseq = concat2 (Fchar_to_string (make_number (prefix)), | |
3432 Fchar_to_string (make_number (com_letter))); | |
3433 | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3434 pos = xrep.MouseY - (f->display.x->v_scroll_bar_width - 2); |
389 | 3435 XSET (tempx, Lisp_Int, pos); |
771 | 3436 len = ((FONT_HEIGHT (f->display.x->font) * f->height) |
3437 + f->display.x->internal_border_width | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3438 - (2 * (f->display.x->v_scroll_bar_width - 2))); |
389 | 3439 XSET (tempy, Lisp_Int, len); |
3440 XSET (timestamp, Lisp_Int, (xrep.MouseTime & 0x7fffff)); | |
771 | 3441 Vmouse_window = f->selected_window; |
389 | 3442 Vmouse_event |
3443 = Fcons (Fcons (tempx, Fcons (tempy, | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3444 Fcons (make_number (f->display.x->v_scroll_bar_width - 2), |
389 | 3445 Qnil))), |
3446 Fcons (Vmouse_window, | |
3447 Fcons (intern (part), | |
3448 Fcons (keyseq, Fcons (timestamp, | |
3449 Qnil))))); | |
3450 return Vmouse_event; | |
3451 } | |
3452 else | |
3453 continue; | |
3454 | |
3455 #ifdef HAVE_X11 | |
3456 case MotionNotify: | |
3457 | |
3458 com_letter = x11_encode_mouse_button (xrep); | |
771 | 3459 if ((f = x_window_to_frame (xrep.MouseWindow)) != 0) |
389 | 3460 { |
771 | 3461 Lisp_Object frame; |
389 | 3462 |
3463 XSET (tempx, Lisp_Int, | |
771 | 3464 min (f->width-1, |
3465 max (0, (xrep.MouseX - f->display.x->internal_border_width) | |
3466 / FONT_WIDTH (f->display.x->font)))); | |
389 | 3467 XSET (tempy, Lisp_Int, |
771 | 3468 min (f->height-1, |
3469 max (0, (xrep.MouseY - f->display.x->internal_border_width) | |
3470 / FONT_HEIGHT (f->display.x->font)))); | |
389 | 3471 |
771 | 3472 XSET (frame, Lisp_Frame, f); |
389 | 3473 XSET (timestamp, Lisp_Int, (xrep.MouseTime & 0x7fffff)); |
3474 | |
3475 pos = Fcons (tempx, Fcons (tempy, Qnil)); | |
3476 Vmouse_window | |
771 | 3477 = Flocate_window_from_coordinates (frame, pos); |
389 | 3478 |
3479 Vmouse_event | |
3480 = Fcons (pos, | |
3481 Fcons (Vmouse_window, | |
3482 Fcons (Qnil, | |
3483 Fcons (Fchar_to_string (make_number (com_letter)), | |
3484 Fcons (timestamp, Qnil))))); | |
3485 return Vmouse_event; | |
3486 } | |
3487 | |
3488 break; | |
3489 #endif /* HAVE_X11 */ | |
3490 | |
3491 default: | |
771 | 3492 if (f = x_window_to_frame (xrep.MouseWindow)) |
3493 Vmouse_window = f->selected_window; | |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3494 else if (f = x_window_to_scroll_bar (xrep.MouseWindow, &part, &prefix)) |
771 | 3495 Vmouse_window = f->selected_window; |
389 | 3496 return Vmouse_event = Qnil; |
3497 } | |
3498 } | |
3499 | |
485 | 3500 if (!NILP (arg)) |
389 | 3501 return Qnil; |
3502 | |
3503 /* Wait till we get another mouse event. */ | |
3504 wait_reading_process_input (0, 0, 2, 0); | |
3505 } | |
3506 } | |
3507 #endif | |
3508 | |
3509 | |
3510 #ifndef HAVE_X11 | |
3511 DEFUN ("x-store-cut-buffer", Fx_store_cut_buffer, Sx_store_cut_buffer, | |
3512 1, 1, "sStore text in cut buffer: ", | |
3513 "Store contents of STRING into the cut buffer of the X window system.") | |
3514 (string) | |
3515 register Lisp_Object string; | |
3516 { | |
3517 int mask; | |
3518 | |
3519 CHECK_STRING (string, 1); | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3520 if (! FRAME_X_P (selected_frame)) |
771 | 3521 error ("Selected frame does not understand X protocol."); |
389 | 3522 |
3523 BLOCK_INPUT; | |
3524 XStoreBytes ((char *) XSTRING (string)->data, XSTRING (string)->size); | |
3525 UNBLOCK_INPUT; | |
3526 | |
3527 return Qnil; | |
3528 } | |
3529 | |
3530 DEFUN ("x-get-cut-buffer", Fx_get_cut_buffer, Sx_get_cut_buffer, 0, 0, 0, | |
3531 "Return contents of cut buffer of the X window system, as a string.") | |
3532 () | |
3533 { | |
3534 int len; | |
3535 register Lisp_Object string; | |
3536 int mask; | |
3537 register char *d; | |
3538 | |
3539 BLOCK_INPUT; | |
3540 d = XFetchBytes (&len); | |
3541 string = make_string (d, len); | |
3542 XFree (d); | |
3543 UNBLOCK_INPUT; | |
3544 return string; | |
3545 } | |
3546 #endif /* X10 */ | |
3547 | |
3548 #ifdef HAVE_X11 | |
3549 DEFUN ("x-rebind-key", Fx_rebind_key, Sx_rebind_key, 3, 3, 0, | |
3550 "Rebind X keysym KEYSYM, with MODIFIERS, to generate NEWSTRING.\n\ | |
3551 KEYSYM is a string which conforms to the X keysym definitions found\n\ | |
3552 in X11/keysymdef.h, sans the initial XK_. MODIFIERS is nil or a\n\ | |
3553 list of strings specifying modifier keys such as Control_L, which must\n\ | |
3554 also be depressed for NEWSTRING to appear.") | |
3555 (x_keysym, modifiers, newstring) | |
3556 register Lisp_Object x_keysym; | |
3557 register Lisp_Object modifiers; | |
3558 register Lisp_Object newstring; | |
3559 { | |
3560 char *rawstring; | |
642 | 3561 register KeySym keysym; |
3562 KeySym modifier_list[16]; | |
389 | 3563 |
3564 CHECK_STRING (x_keysym, 1); | |
3565 CHECK_STRING (newstring, 3); | |
3566 | |
3567 keysym = XStringToKeysym ((char *) XSTRING (x_keysym)->data); | |
3568 if (keysym == NoSymbol) | |
3569 error ("Keysym does not exist"); | |
3570 | |
485 | 3571 if (NILP (modifiers)) |
389 | 3572 XRebindKeysym (x_current_display, keysym, modifier_list, 0, |
3573 XSTRING (newstring)->data, XSTRING (newstring)->size); | |
3574 else | |
3575 { | |
3576 register Lisp_Object rest, mod; | |
3577 register int i = 0; | |
3578 | |
485 | 3579 for (rest = modifiers; !NILP (rest); rest = Fcdr (rest)) |
389 | 3580 { |
3581 if (i == 16) | |
3582 error ("Can't have more than 16 modifiers"); | |
3583 | |
3584 mod = Fcar (rest); | |
3585 CHECK_STRING (mod, 3); | |
3586 modifier_list[i] = XStringToKeysym ((char *) XSTRING (mod)->data); | |
3587 if (modifier_list[i] == NoSymbol | |
3588 || !IsModifierKey (modifier_list[i])) | |
3589 error ("Element is not a modifier keysym"); | |
3590 i++; | |
3591 } | |
3592 | |
3593 XRebindKeysym (x_current_display, keysym, modifier_list, i, | |
3594 XSTRING (newstring)->data, XSTRING (newstring)->size); | |
3595 } | |
3596 | |
3597 return Qnil; | |
3598 } | |
3599 | |
3600 DEFUN ("x-rebind-keys", Fx_rebind_keys, Sx_rebind_keys, 2, 2, 0, | |
3601 "Rebind KEYCODE to list of strings STRINGS.\n\ | |
3602 STRINGS should be a list of 16 elements, one for each shift combination.\n\ | |
3603 nil as element means don't change.\n\ | |
3604 See the documentation of `x-rebind-key' for more information.") | |
3605 (keycode, strings) | |
3606 register Lisp_Object keycode; | |
3607 register Lisp_Object strings; | |
3608 { | |
3609 register Lisp_Object item; | |
3610 register unsigned char *rawstring; | |
3611 KeySym rawkey, modifier[1]; | |
3612 int strsize; | |
3613 register unsigned i; | |
3614 | |
3615 CHECK_NUMBER (keycode, 1); | |
3616 CHECK_CONS (strings, 2); | |
3617 rawkey = (KeySym) ((unsigned) (XINT (keycode))) & 255; | |
3618 for (i = 0; i <= 15; strings = Fcdr (strings), i++) | |
3619 { | |
3620 item = Fcar (strings); | |
485 | 3621 if (!NILP (item)) |
389 | 3622 { |
3623 CHECK_STRING (item, 2); | |
3624 strsize = XSTRING (item)->size; | |
3625 rawstring = (unsigned char *) xmalloc (strsize); | |
3626 bcopy (XSTRING (item)->data, rawstring, strsize); | |
3627 modifier[1] = 1 << i; | |
3628 XRebindKeysym (x_current_display, rawkey, modifier, 1, | |
3629 rawstring, strsize); | |
3630 } | |
3631 } | |
3632 return Qnil; | |
3633 } | |
3634 #else | |
3635 DEFUN ("x-rebind-key", Fx_rebind_key, Sx_rebind_key, 3, 3, 0, | |
3636 "Rebind KEYCODE, with shift bits SHIFT-MASK, to new string NEWSTRING.\n\ | |
3637 KEYCODE and SHIFT-MASK should be numbers representing the X keyboard code\n\ | |
3638 and shift mask respectively. NEWSTRING is an arbitrary string of keystrokes.\n\ | |
3639 If SHIFT-MASK is nil, then KEYCODE's key will be bound to NEWSTRING for\n\ | |
3640 all shift combinations.\n\ | |
3641 Shift Lock 1 Shift 2\n\ | |
3642 Meta 4 Control 8\n\ | |
3643 \n\ | |
3644 For values of KEYCODE, see /usr/lib/Xkeymap.txt (remember that the codes\n\ | |
3645 in that file are in octal!)\n\ | |
3646 \n\ | |
3647 NOTE: due to an X bug, this function will not take effect unless one has\n\ | |
3648 a `~/.Xkeymap' file. (See the documentation for the `keycomp' program.)\n\ | |
3649 This problem will be fixed in X version 11.") | |
3650 | |
3651 (keycode, shift_mask, newstring) | |
3652 register Lisp_Object keycode; | |
3653 register Lisp_Object shift_mask; | |
3654 register Lisp_Object newstring; | |
3655 { | |
3656 char *rawstring; | |
3657 int keysym, rawshift; | |
3658 int i, strsize; | |
3659 | |
3660 CHECK_NUMBER (keycode, 1); | |
485 | 3661 if (!NILP (shift_mask)) |
389 | 3662 CHECK_NUMBER (shift_mask, 2); |
3663 CHECK_STRING (newstring, 3); | |
3664 strsize = XSTRING (newstring)->size; | |
3665 rawstring = (char *) xmalloc (strsize); | |
3666 bcopy (XSTRING (newstring)->data, rawstring, strsize); | |
3667 | |
3668 keysym = ((unsigned) (XINT (keycode))) & 255; | |
3669 | |
485 | 3670 if (NILP (shift_mask)) |
389 | 3671 { |
3672 for (i = 0; i <= 15; i++) | |
3673 XRebindCode (keysym, i<<11, rawstring, strsize); | |
3674 } | |
3675 else | |
3676 { | |
3677 rawshift = (((unsigned) (XINT (shift_mask))) & 15) << 11; | |
3678 XRebindCode (keysym, rawshift, rawstring, strsize); | |
3679 } | |
3680 return Qnil; | |
3681 } | |
3682 | |
3683 DEFUN ("x-rebind-keys", Fx_rebind_keys, Sx_rebind_keys, 2, 2, 0, | |
3684 "Rebind KEYCODE to list of strings STRINGS.\n\ | |
3685 STRINGS should be a list of 16 elements, one for each shift combination.\n\ | |
3686 nil as element means don't change.\n\ | |
3687 See the documentation of `x-rebind-key' for more information.") | |
3688 (keycode, strings) | |
3689 register Lisp_Object keycode; | |
3690 register Lisp_Object strings; | |
3691 { | |
3692 register Lisp_Object item; | |
3693 register char *rawstring; | |
3694 KeySym rawkey, modifier[1]; | |
3695 int strsize; | |
3696 register unsigned i; | |
3697 | |
3698 CHECK_NUMBER (keycode, 1); | |
3699 CHECK_CONS (strings, 2); | |
3700 rawkey = (KeySym) ((unsigned) (XINT (keycode))) & 255; | |
3701 for (i = 0; i <= 15; strings = Fcdr (strings), i++) | |
3702 { | |
3703 item = Fcar (strings); | |
485 | 3704 if (!NILP (item)) |
389 | 3705 { |
3706 CHECK_STRING (item, 2); | |
3707 strsize = XSTRING (item)->size; | |
3708 rawstring = (char *) xmalloc (strsize); | |
3709 bcopy (XSTRING (item)->data, rawstring, strsize); | |
3710 XRebindCode (rawkey, i << 11, rawstring, strsize); | |
3711 } | |
3712 } | |
3713 return Qnil; | |
3714 } | |
3715 #endif /* not HAVE_X11 */ | |
3716 | |
3717 #ifdef HAVE_X11 | |
3718 Visual * | |
3719 select_visual (screen, depth) | |
3720 Screen *screen; | |
3721 unsigned int *depth; | |
3722 { | |
3723 Visual *v; | |
3724 XVisualInfo *vinfo, vinfo_template; | |
3725 int n_visuals; | |
3726 | |
3727 v = DefaultVisualOfScreen (screen); | |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3728 |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3729 #ifdef HAVE_X11R4 |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3730 vinfo_template.visualid = XVisualIDFromVisual (v); |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3731 #else |
2341
1982e2983822
* xfns.c (x_make_gc): Don't forget to block X input around the
Jim Blandy <jimb@redhat.com>
parents:
2328
diff
changeset
|
3732 vinfo_template.visualid = v->visualid; |
1050
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3733 #endif |
133bad38bde1
* xfns.c (x_icon): Don't call x_wm_set_icon_positions if the user
Jim Blandy <jimb@redhat.com>
parents:
1018
diff
changeset
|
3734 |
389 | 3735 vinfo = XGetVisualInfo (x_current_display, VisualIDMask, &vinfo_template, |
3736 &n_visuals); | |
3737 if (n_visuals != 1) | |
3738 fatal ("Can't get proper X visual info"); | |
3739 | |
3740 if ((1 << vinfo->depth) == vinfo->colormap_size) | |
3741 *depth = vinfo->depth; | |
3742 else | |
3743 { | |
3744 int i = 0; | |
3745 int n = vinfo->colormap_size - 1; | |
3746 while (n) | |
3747 { | |
3748 n = n >> 1; | |
3749 i++; | |
3750 } | |
3751 *depth = i; | |
3752 } | |
3753 | |
3754 XFree ((char *) vinfo); | |
3755 return v; | |
3756 } | |
3757 #endif /* HAVE_X11 */ | |
3758 | |
3759 DEFUN ("x-open-connection", Fx_open_connection, Sx_open_connection, | |
3760 1, 2, 0, "Open a connection to an X server.\n\ | |
3761 DISPLAY is the name of the display to connect to. Optional second\n\ | |
3762 arg XRM_STRING is a string of resources in xrdb format.") | |
3763 (display, xrm_string) | |
3764 Lisp_Object display, xrm_string; | |
3765 { | |
3766 unsigned int n_planes; | |
3767 unsigned char *xrm_option; | |
3768 | |
3769 CHECK_STRING (display, 0); | |
3770 if (x_current_display != 0) | |
3771 error ("X server connection is already initialized"); | |
3772 | |
3773 /* This is what opens the connection and sets x_current_display. | |
3774 This also initializes many symbols, such as those used for input. */ | |
3775 x_term_init (XSTRING (display)->data); | |
3776 | |
3777 #ifdef HAVE_X11 | |
3778 XFASTINT (Vwindow_system_version) = 11; | |
3779 | |
3780 if (!EQ (xrm_string, Qnil)) | |
3781 { | |
3782 CHECK_STRING (xrm_string, 1); | |
3783 xrm_option = (unsigned char *) XSTRING (xrm_string); | |
3784 } | |
3785 else | |
3786 xrm_option = (unsigned char *) 0; | |
3787 xrdb = x_load_resources (x_current_display, xrm_option, EMACS_CLASS); | |
2283
997f8e481bf8
* xfns.c (Fx_open_connection): If we have X11R5, use
Jim Blandy <jimb@redhat.com>
parents:
2279
diff
changeset
|
3788 #ifdef HAVE_X11R5 |
997f8e481bf8
* xfns.c (Fx_open_connection): If we have X11R5, use
Jim Blandy <jimb@redhat.com>
parents:
2279
diff
changeset
|
3789 XrmSetDatabase (x_current_display, xrdb); |
997f8e481bf8
* xfns.c (Fx_open_connection): If we have X11R5, use
Jim Blandy <jimb@redhat.com>
parents:
2279
diff
changeset
|
3790 #else |
389 | 3791 x_current_display->db = xrdb; |
2283
997f8e481bf8
* xfns.c (Fx_open_connection): If we have X11R5, use
Jim Blandy <jimb@redhat.com>
parents:
2279
diff
changeset
|
3792 #endif |
389 | 3793 |
3794 x_screen = DefaultScreenOfDisplay (x_current_display); | |
3795 | |
3796 screen_visual = select_visual (x_screen, &n_planes); | |
1528
924c8a609582
* xfns.c (x_decode_color, Fx_color_display_p): x_screen_planes is
Jim Blandy <jimb@redhat.com>
parents:
1438
diff
changeset
|
3797 x_screen_planes = n_planes; |
2276
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3798 x_screen_height = HeightOfScreen (x_screen); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3799 x_screen_width = WidthOfScreen (x_screen); |
389 | 3800 |
3801 /* X Atoms used by emacs. */ | |
2197
fb5a1caebef6
(Xatom_wm_change_state): Just declare.
Richard M. Stallman <rms@gnu.org>
parents:
2136
diff
changeset
|
3802 Xatoms_of_xselect (); |
389 | 3803 BLOCK_INPUT; |
641 | 3804 Xatom_wm_protocols = XInternAtom (x_current_display, "WM_PROTOCOLS", |
3805 False); | |
3806 Xatom_wm_take_focus = XInternAtom (x_current_display, "WM_TAKE_FOCUS", | |
3807 False); | |
3808 Xatom_wm_save_yourself = XInternAtom (x_current_display, "WM_SAVE_YOURSELF", | |
3809 False); | |
3810 Xatom_wm_delete_window = XInternAtom (x_current_display, "WM_DELETE_WINDOW", | |
3811 False); | |
3812 Xatom_wm_change_state = XInternAtom (x_current_display, "WM_CHANGE_STATE", | |
3813 False); | |
3814 Xatom_wm_configure_denied = XInternAtom (x_current_display, | |
3815 "WM_CONFIGURE_DENIED", False); | |
3816 Xatom_wm_window_moved = XInternAtom (x_current_display, "WM_MOVED", | |
3817 False); | |
389 | 3818 UNBLOCK_INPUT; |
3819 #else /* not HAVE_X11 */ | |
3820 XFASTINT (Vwindow_system_version) = 10; | |
3821 #endif /* not HAVE_X11 */ | |
3822 return Qnil; | |
3823 } | |
3824 | |
3825 DEFUN ("x-close-current-connection", Fx_close_current_connection, | |
3826 Sx_close_current_connection, | |
3827 0, 0, 0, "Close the connection to the current X server.") | |
3828 () | |
3829 { | |
3830 #ifdef HAVE_X11 | |
3831 /* This is ONLY used when killing emacs; For switching displays | |
3832 we'll have to take care of setting CloseDownMode elsewhere. */ | |
3833 | |
3834 if (x_current_display) | |
3835 { | |
3836 BLOCK_INPUT; | |
3837 XSetCloseDownMode (x_current_display, DestroyAll); | |
3838 XCloseDisplay (x_current_display); | |
3839 } | |
3840 else | |
3841 fatal ("No current X display connection to close\n"); | |
3842 #endif | |
3843 return Qnil; | |
3844 } | |
3845 | |
3846 DEFUN ("x-synchronize", Fx_synchronize, Sx_synchronize, | |
3847 1, 1, 0, "If ON is non-nil, report X errors as soon as the erring request is made.\n\ | |
3848 If ON is nil, allow buffering of requests.\n\ | |
3849 Turning on synchronization prohibits the Xlib routines from buffering\n\ | |
3850 requests and seriously degrades performance, but makes debugging much\n\ | |
3851 easier.") | |
3852 (on) | |
3853 Lisp_Object on; | |
3854 { | |
3855 XSynchronize (x_current_display, !EQ (on, Qnil)); | |
3856 | |
3857 return Qnil; | |
3858 } | |
3859 | |
3860 | |
3861 syms_of_xfns () | |
3862 { | |
3863 /* This is zero if not using X windows. */ | |
3864 x_current_display = 0; | |
3865 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3866 /* The section below is built by the lisp expression at the top of the file, |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3867 just above where these variables are declared. */ |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3868 /*&&& init symbols here &&&*/ |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3869 Qauto_raise = intern ("auto-raise"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3870 staticpro (&Qauto_raise); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3871 Qauto_lower = intern ("auto-lower"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3872 staticpro (&Qauto_lower); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3873 Qbackground_color = intern ("background-color"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3874 staticpro (&Qbackground_color); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
3875 Qbar = intern ("bar"); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
3876 staticpro (&Qbar); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3877 Qborder_color = intern ("border-color"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3878 staticpro (&Qborder_color); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3879 Qborder_width = intern ("border-width"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3880 staticpro (&Qborder_width); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
3881 Qbox = intern ("box"); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
3882 staticpro (&Qbox); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3883 Qcursor_color = intern ("cursor-color"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3884 staticpro (&Qcursor_color); |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
3885 Qcursor_type = intern ("cursor-type"); |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1786
diff
changeset
|
3886 staticpro (&Qcursor_type); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3887 Qfont = intern ("font"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3888 staticpro (&Qfont); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3889 Qforeground_color = intern ("foreground-color"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3890 staticpro (&Qforeground_color); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3891 Qgeometry = intern ("geometry"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3892 staticpro (&Qgeometry); |
2294
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
3893 Qicon = intern ("icon"); |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
3894 staticpro (&Qicon); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3895 Qicon_left = intern ("icon-left"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3896 staticpro (&Qicon_left); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3897 Qicon_top = intern ("icon-top"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3898 staticpro (&Qicon_top); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3899 Qicon_type = intern ("icon-type"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3900 staticpro (&Qicon_type); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3901 Qinternal_border_width = intern ("internal-border-width"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3902 staticpro (&Qinternal_border_width); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3903 Qleft = intern ("left"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3904 staticpro (&Qleft); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3905 Qmouse_color = intern ("mouse-color"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3906 staticpro (&Qmouse_color); |
1874
19cf50641d6c
* frame.c (Fframe_parameters): Report the `minibuffer' parameter of
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
3907 Qnone = intern ("none"); |
19cf50641d6c
* frame.c (Fframe_parameters): Report the `minibuffer' parameter of
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
3908 staticpro (&Qnone); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3909 Qparent_id = intern ("parent-id"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3910 staticpro (&Qparent_id); |
2328
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
3911 Qsuppress_icon = intern ("suppress-icon"); |
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
3912 staticpro (&Qsuppress_icon); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3913 Qtop = intern ("top"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3914 staticpro (&Qtop); |
389 | 3915 Qundefined_color = intern ("undefined-color"); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3916 staticpro (&Qundefined_color); |
1994
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3917 Qvertical_scroll_bars = intern ("vertical-scroll-bars"); |
73ce9dd21093
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1932
diff
changeset
|
3918 staticpro (&Qvertical_scroll_bars); |
2294
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
3919 Qvisibility = intern ("visibility"); |
9bce20507666
Use the `visiblity' parameter to determine the initial state of
Jim Blandy <jimb@redhat.com>
parents:
2283
diff
changeset
|
3920 staticpro (&Qvisibility); |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3921 Qwindow_id = intern ("window-id"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3922 staticpro (&Qwindow_id); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3923 Qx_frame_parameter = intern ("x-frame-parameter"); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3924 staticpro (&Qx_frame_parameter); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3925 /* This is the end of symbol initialization. */ |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3926 |
389 | 3927 Fput (Qundefined_color, Qerror_conditions, |
3928 Fcons (Qundefined_color, Fcons (Qerror, Qnil))); | |
3929 Fput (Qundefined_color, Qerror_message, | |
3930 build_string ("Undefined color")); | |
3931 | |
974
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3932 init_x_parm_symbols (); |
4f88a1b78a46
* xfns.c (x_get_arg): Return Qunbound for an unspecified
Jim Blandy <jimb@redhat.com>
parents:
833
diff
changeset
|
3933 |
389 | 3934 DEFVAR_INT ("mouse-buffer-offset", &mouse_buffer_offset, |
3935 "The buffer offset of the character under the pointer."); | |
1528
924c8a609582
* xfns.c (x_decode_color, Fx_color_display_p): x_screen_planes is
Jim Blandy <jimb@redhat.com>
parents:
1438
diff
changeset
|
3936 mouse_buffer_offset = 0; |
389 | 3937 |
3938 DEFVAR_INT ("x-pointer-shape", &Vx_pointer_shape, | |
3939 "The shape of the pointer when over text."); | |
3940 Vx_pointer_shape = Qnil; | |
3941 | |
3942 DEFVAR_INT ("x-nontext-pointer-shape", &Vx_nontext_pointer_shape, | |
3943 "The shape of the pointer when not over text."); | |
3944 Vx_nontext_pointer_shape = Qnil; | |
3945 | |
3946 DEFVAR_INT ("x-mode-pointer-shape", &Vx_mode_pointer_shape, | |
687
e2b747dd6a6e
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
642
diff
changeset
|
3947 "The shape of the pointer when over the mode line."); |
389 | 3948 Vx_mode_pointer_shape = Qnil; |
3949 | |
3950 DEFVAR_LISP ("x-cursor-fore-pixel", &Vx_cursor_fore_pixel, | |
3951 "A string indicating the foreground color of the cursor box."); | |
3952 Vx_cursor_fore_pixel = Qnil; | |
3953 | |
3954 DEFVAR_LISP ("mouse-grabbed", &Vmouse_depressed, | |
3955 "Non-nil if a mouse button is currently depressed."); | |
3956 Vmouse_depressed = Qnil; | |
3957 | |
3958 DEFVAR_LISP ("x-no-window-manager", &Vx_no_window_manager, | |
3959 "t if no X window manager is in use."); | |
3960 | |
3961 #ifdef HAVE_X11 | |
3962 defsubr (&Sx_get_resource); | |
689
45401d45581d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
687
diff
changeset
|
3963 #if 0 |
389 | 3964 defsubr (&Sx_draw_rectangle); |
3965 defsubr (&Sx_erase_rectangle); | |
3966 defsubr (&Sx_contour_region); | |
3967 defsubr (&Sx_uncontour_region); | |
689
45401d45581d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
687
diff
changeset
|
3968 #endif |
2277
773e47f29c5a
(Fx_display_color_p): Renamed from Fx_color_display_p.
Richard M. Stallman <rms@gnu.org>
parents:
2276
diff
changeset
|
3969 defsubr (&Sx_display_color_p); |
2328
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
3970 defsubr (&Sx_color_defined_p); |
2276
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3971 defsubr (&Sx_server_vendor); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3972 defsubr (&Sx_server_version); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3973 defsubr (&Sx_display_pixel_width); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3974 defsubr (&Sx_display_pixel_height); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3975 defsubr (&Sx_display_mm_width); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3976 defsubr (&Sx_display_mm_height); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3977 defsubr (&Sx_display_screens); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3978 defsubr (&Sx_display_planes); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3979 defsubr (&Sx_display_color_cells); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3980 defsubr (&Sx_display_visual_class); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3981 defsubr (&Sx_display_backing_store); |
68328c3af38f
(x_screen): Make this var file scope.
Richard M. Stallman <rms@gnu.org>
parents:
2197
diff
changeset
|
3982 defsubr (&Sx_display_save_under); |
389 | 3983 #if 0 |
3984 defsubr (&Sx_track_pointer); | |
3985 defsubr (&Sx_grab_pointer); | |
3986 defsubr (&Sx_ungrab_pointer); | |
436
6e0a136fca4f
*** empty log message ***
Michael I. Bushnell <mib@gnu.org>
parents:
398
diff
changeset
|
3987 #endif |
389 | 3988 #else |
3989 defsubr (&Sx_get_default); | |
3990 defsubr (&Sx_store_cut_buffer); | |
3991 defsubr (&Sx_get_cut_buffer); | |
3992 defsubr (&Sx_set_face); | |
3993 #endif | |
2328
82e4fed9cdd6
* xfns.c (Fx_parse_geometry): Renamed from Fx_geometry.
Jim Blandy <jimb@redhat.com>
parents:
2295
diff
changeset
|
3994 defsubr (&Sx_parse_geometry); |
771 | 3995 defsubr (&Sx_create_frame); |
3996 defsubr (&Sfocus_frame); | |
3997 defsubr (&Sunfocus_frame); | |
687
e2b747dd6a6e
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
642
diff
changeset
|
3998 #if 0 |
389 | 3999 defsubr (&Sx_horizontal_line); |
687
e2b747dd6a6e
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
642
diff
changeset
|
4000 #endif |
389 | 4001 defsubr (&Sx_rebind_key); |
4002 defsubr (&Sx_rebind_keys); | |
4003 defsubr (&Sx_open_connection); | |
4004 defsubr (&Sx_close_current_connection); | |
4005 defsubr (&Sx_synchronize); | |
4006 | |
4007 /* This was used in the old event interface which used a separate | |
4008 event queue.*/ | |
4009 #if 0 | |
4010 defsubr (&Sx_mouse_events); | |
4011 defsubr (&Sx_get_mouse_event); | |
4012 #endif | |
4013 } | |
4014 | |
4015 #endif /* HAVE_X_WINDOWS */ |