annotate src/frame.c @ 39928:f630f8658de3

Add no-byte-compile.
author Eli Zaretskii <eliz@gnu.org>
date Sun, 14 Oct 2001 19:35:40 +0000
parents fa0407ac162f
children 579177964efa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1 /* Generic frame functions.
36433
20b42ba5a623 (make_frame): Use allocate_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 35817
diff changeset
2 Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001
20b42ba5a623 (make_frame): Use allocate_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 35817
diff changeset
3 Free Software Foundation.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5 This file is part of GNU Emacs.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 GNU Emacs is free software; you can redistribute it and/or modify
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
9 the Free Software Foundation; either version 2, or (at your option)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 any later version.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 GNU General Public License for more details.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14077
diff changeset
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14077
diff changeset
20 Boston, MA 02111-1307, USA. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
7900
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7646
diff changeset
22 #include <config.h>
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
23
7900
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7646
diff changeset
24 #include <stdio.h>
987
afb21e974ed2 * frame.c (make_frame): Stop passing zero to make_window; it's not
Jim Blandy <jimb@redhat.com>
parents: 965
diff changeset
25 #include "lisp.h"
17032
814257735e7d Include "charset.h"
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
26 #include "charset.h"
21825
697991d2a2c4 Conditionally include xterm.h using HAVE_X_WINDOWS.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21524
diff changeset
27 #ifdef HAVE_X_WINDOWS
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21359
diff changeset
28 #include "xterm.h"
17032
814257735e7d Include "charset.h"
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
29 #endif
27633
ab6c81c6edf8 [WINDOWSNT]: Include w32term.h.
Andrew Innes <andrewi@gnu.org>
parents: 27575
diff changeset
30 #ifdef WINDOWSNT
ab6c81c6edf8 [WINDOWSNT]: Include w32term.h.
Andrew Innes <andrewi@gnu.org>
parents: 27575
diff changeset
31 #include "w32term.h"
ab6c81c6edf8 [WINDOWSNT]: Include w32term.h.
Andrew Innes <andrewi@gnu.org>
parents: 27575
diff changeset
32 #endif
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32545
diff changeset
33 #ifdef macintosh
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32545
diff changeset
34 #include "macterm.h"
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32545
diff changeset
35 #endif
31102
6a0caa788013 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 29995
diff changeset
36 #include "buffer.h"
6a0caa788013 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 29995
diff changeset
37 /* These help us bind and responding to switch-frame events. */
6a0caa788013 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 29995
diff changeset
38 #include "commands.h"
6a0caa788013 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 29995
diff changeset
39 #include "keyboard.h"
39748
42b7a798ff79 Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39581
diff changeset
40 #include "keymap.h"
987
afb21e974ed2 * frame.c (make_frame): Stop passing zero to make_window; it's not
Jim Blandy <jimb@redhat.com>
parents: 965
diff changeset
41 #include "frame.h"
23515
1e52542fb338 Include frame.h before fontset.h.
Kenichi Handa <handa@m17n.org>
parents: 22188
diff changeset
42 #ifdef HAVE_WINDOW_SYSTEM
1e52542fb338 Include frame.h before fontset.h.
Kenichi Handa <handa@m17n.org>
parents: 22188
diff changeset
43 #include "fontset.h"
1e52542fb338 Include frame.h before fontset.h.
Kenichi Handa <handa@m17n.org>
parents: 22188
diff changeset
44 #endif
5392
d8d5844c3ba6 Always include termhooks.h.
Richard M. Stallman <rms@gnu.org>
parents: 5231
diff changeset
45 #include "termhooks.h"
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21359
diff changeset
46 #include "dispextern.h"
7162
06a13bf36a8c (Fframe_parameters) [!MULTI_FRAME]: Unstub it again.
Karl Heuer <kwzh@gnu.org>
parents: 7134
diff changeset
47 #include "window.h"
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9309
diff changeset
48 #ifdef MSDOS
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9309
diff changeset
49 #include "msdos.h"
25117
f6f34f0bc1af (make_terminal_frame) [MSDOS]: Don't call
Eli Zaretskii <eliz@gnu.org>
parents: 25030
diff changeset
50 #include "dosfns.h"
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9309
diff changeset
51 #endif
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 714
diff changeset
52
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
53 Lisp_Object Qframep;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
54 Lisp_Object Qframe_live_p;
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
55 Lisp_Object Qheight;
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
56 Lisp_Object Qicon;
539
b99d4eb7ed93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
57 Lisp_Object Qminibuffer;
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
58 Lisp_Object Qmodeline;
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
59 Lisp_Object Qname;
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
60 Lisp_Object Qonly;
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
61 Lisp_Object Qunsplittable;
2131
468df2d7e371 (x_frame_parms): Add elts for visibility and menu-bar-lines.
Richard M. Stallman <rms@gnu.org>
parents: 2068
diff changeset
62 Lisp_Object Qmenu_bar_lines;
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25523
diff changeset
63 Lisp_Object Qtool_bar_lines;
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
64 Lisp_Object Qwidth;
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
65 Lisp_Object Qx;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16568
diff changeset
66 Lisp_Object Qw32;
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
67 Lisp_Object Qpc;
25523
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
68 Lisp_Object Qmac;
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
69 Lisp_Object Qvisible;
10207
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
70 Lisp_Object Qbuffer_predicate;
17221
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
71 Lisp_Object Qbuffer_list;
14217
673d1913844b (syms_of_frame_1): Initialize Qtitle.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
72 Lisp_Object Qtitle;
31399
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
73 Lisp_Object Qdisplay_type;
31448
70b366918608 (Fframe_parameter): Handle `name' and `background-mode'
Gerd Moellmann <gerd@gnu.org>
parents: 31442
diff changeset
74 Lisp_Object Qbackground_mode;
33509
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
75 Lisp_Object Qinhibit_default_face_x_resources;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76
12761
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
77 Lisp_Object Vterminal_frame;
13522
6a97ea1245b5 (syms_of_frame_1): Set up Vdefault_frame_alist here.
Richard M. Stallman <rms@gnu.org>
parents: 13498
diff changeset
78 Lisp_Object Vdefault_frame_alist;
27795
83292274bbd4 (Vmouse_position_function): New variable.
Dave Love <fx@gnu.org>
parents: 27725
diff changeset
79 Lisp_Object Vmouse_position_function;
12761
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
80
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
81 static void
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
82 set_menu_bar_lines_1 (window, n)
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
83 Lisp_Object window;
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
84 int n;
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
85 {
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
86 struct window *w = XWINDOW (window);
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
87
13498
c10046894834 (set_menu_bar_lines): Record the fact that the window configuration changes.
Richard M. Stallman <rms@gnu.org>
parents: 13412
diff changeset
88 XSETFASTINT (w->last_modified, 0);
12761
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
89 XSETFASTINT (w->top, XFASTINT (w->top) + n);
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
90 XSETFASTINT (w->height, XFASTINT (w->height) - n);
28010
5e3c139838a6 (x_set_menu_bar_lines_1): Adjust window's orig_top and
Gerd Moellmann <gerd@gnu.org>
parents: 27800
diff changeset
91
5e3c139838a6 (x_set_menu_bar_lines_1): Adjust window's orig_top and
Gerd Moellmann <gerd@gnu.org>
parents: 27800
diff changeset
92 if (INTEGERP (w->orig_top))
5e3c139838a6 (x_set_menu_bar_lines_1): Adjust window's orig_top and
Gerd Moellmann <gerd@gnu.org>
parents: 27800
diff changeset
93 XSETFASTINT (w->orig_top, XFASTINT (w->orig_top) + n);
5e3c139838a6 (x_set_menu_bar_lines_1): Adjust window's orig_top and
Gerd Moellmann <gerd@gnu.org>
parents: 27800
diff changeset
94 if (INTEGERP (w->orig_height))
5e3c139838a6 (x_set_menu_bar_lines_1): Adjust window's orig_top and
Gerd Moellmann <gerd@gnu.org>
parents: 27800
diff changeset
95 XSETFASTINT (w->orig_height, XFASTINT (w->orig_height) - n);
12761
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
96
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
97 /* Handle just the top child in a vertical split. */
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
98 if (!NILP (w->vchild))
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
99 set_menu_bar_lines_1 (w->vchild, n);
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
100
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
101 /* Adjust all children in a horizontal split. */
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
102 for (window = w->hchild; !NILP (window); window = w->next)
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
103 {
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
104 w = XWINDOW (window);
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
105 set_menu_bar_lines_1 (window, n);
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
106 }
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
107 }
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
108
20038
bb460edc7187 (set_menu_bar_lines): Make the function external instead
Eli Zaretskii <eliz@gnu.org>
parents: 19532
diff changeset
109 void
12761
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
110 set_menu_bar_lines (f, value, oldval)
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
111 struct frame *f;
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
112 Lisp_Object value, oldval;
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
113 {
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
114 int nlines;
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
115 int olines = FRAME_MENU_BAR_LINES (f);
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
116
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
117 /* Right now, menu bars don't work properly in minibuf-only frames;
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
118 most of the commands try to apply themselves to the minibuffer
16051
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15696
diff changeset
119 frame itself, and get an error because you can't switch buffers
12761
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
120 in or split the minibuffer window. */
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
121 if (FRAME_MINIBUF_ONLY_P (f))
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
122 return;
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
123
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
124 if (INTEGERP (value))
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
125 nlines = XINT (value);
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
126 else
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
127 nlines = 0;
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
128
13498
c10046894834 (set_menu_bar_lines): Record the fact that the window configuration changes.
Richard M. Stallman <rms@gnu.org>
parents: 13412
diff changeset
129 if (nlines != olines)
c10046894834 (set_menu_bar_lines): Record the fact that the window configuration changes.
Richard M. Stallman <rms@gnu.org>
parents: 13412
diff changeset
130 {
c10046894834 (set_menu_bar_lines): Record the fact that the window configuration changes.
Richard M. Stallman <rms@gnu.org>
parents: 13412
diff changeset
131 windows_or_buffers_changed++;
c10046894834 (set_menu_bar_lines): Record the fact that the window configuration changes.
Richard M. Stallman <rms@gnu.org>
parents: 13412
diff changeset
132 FRAME_WINDOW_SIZES_CHANGED (f) = 1;
c10046894834 (set_menu_bar_lines): Record the fact that the window configuration changes.
Richard M. Stallman <rms@gnu.org>
parents: 13412
diff changeset
133 FRAME_MENU_BAR_LINES (f) = nlines;
c10046894834 (set_menu_bar_lines): Record the fact that the window configuration changes.
Richard M. Stallman <rms@gnu.org>
parents: 13412
diff changeset
134 set_menu_bar_lines_1 (f->root_window, nlines - olines);
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
135 adjust_glyphs (f);
13498
c10046894834 (set_menu_bar_lines): Record the fact that the window configuration changes.
Richard M. Stallman <rms@gnu.org>
parents: 13412
diff changeset
136 }
12761
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
137 }
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
138
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
139 Lisp_Object Vemacs_iconified;
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
140 Lisp_Object Vframe_list;
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
141
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
142 struct x_output tty_display;
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
143
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 extern Lisp_Object Vminibuffer_list;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 extern Lisp_Object get_minibuffer ();
5172
9aa201005b16 (Fhandle_switch_frame, Fredirect_frame_focus): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 5105
diff changeset
146 extern Lisp_Object Fhandle_switch_frame ();
9aa201005b16 (Fhandle_switch_frame, Fredirect_frame_focus): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 5105
diff changeset
147 extern Lisp_Object Fredirect_frame_focus ();
12005
4a722a97c8d3 Declare x_get_focus_frame.
Karl Heuer <kwzh@gnu.org>
parents: 11906
diff changeset
148 extern Lisp_Object x_get_focus_frame ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
150 DEFUN ("framep", Fframep, Sframep, 1, 1, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
151 "Return non-nil if OBJECT is a frame.\n\
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
152 Value is t for a termcap frame (a character-only terminal),\n\
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9309
diff changeset
153 `x' for an Emacs frame that is really an X window,\n\
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
154 `w32' for an Emacs frame that is a window on MS-Windows display,\n\
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
155 `mac' for an Emacs frame on a Macintosh display,\n\
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9309
diff changeset
156 `pc' for a direct-write MS-DOS frame.\n\
10851
8064f933eed7 (Fframep): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10783
diff changeset
157 See also `frame-live-p'.")
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
158 (object)
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
159 Lisp_Object object;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 {
9127
0b4836daa8e1 (Fframep, make_frame_without_minibuffer, do_switch_frame, prev_frame,
Karl Heuer <kwzh@gnu.org>
parents: 9032
diff changeset
161 if (!FRAMEP (object))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 return Qnil;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
163 switch (XFRAME (object)->output_method)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 case output_termcap:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 return Qt;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 case output_x_window:
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
168 return Qx;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16568
diff changeset
169 case output_w32:
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16568
diff changeset
170 return Qw32;
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
171 case output_msdos_raw:
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
172 return Qpc;
25523
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
173 case output_mac:
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
174 return Qmac;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 default:
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 abort ();
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
180 DEFUN ("frame-live-p", Fframe_live_p, Sframe_live_p, 1, 1, 0,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
181 "Return non-nil if OBJECT is a frame which has not been deleted.\n\
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
182 Value is nil if OBJECT is not a live frame. If object is a live\n\
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
183 frame, the return value indicates what sort of output device it is\n\
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
184 displayed on. Value is t for a termcap frame (a character-only\n\
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
185 terminal), `x' for an Emacs frame being displayed in an X window.")
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
186 (object)
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
187 Lisp_Object object;
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
188 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
189 return ((FRAMEP (object)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
190 && FRAME_LIVE_P (XFRAME (object)))
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
191 ? Fframep (object)
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
192 : Qnil);
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
193 }
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
194
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
195 struct frame *
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
196 make_frame (mini_p)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 int mini_p;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
199 Lisp_Object frame;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
200 register struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 register Lisp_Object root_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 register Lisp_Object mini_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203
36433
20b42ba5a623 (make_frame): Use allocate_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 35817
diff changeset
204 f = allocate_frame ();
9972
92b33538b36a (make_frame): Use allocate_vectorlike and VECSIZE.
Karl Heuer <kwzh@gnu.org>
parents: 9901
diff changeset
205 XSETFRAME (frame, f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
207 f->desired_matrix = 0;
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
208 f->current_matrix = 0;
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
209 f->desired_pool = 0;
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
210 f->current_pool = 0;
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
211 f->glyphs_initialized_p = 0;
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
212 f->decode_mode_spec_buffer = 0;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
213 f->visible = 0;
1652
93497cd89204 * frame.c (make_frame): Initialize async_visible and
Jim Blandy <jimb@redhat.com>
parents: 1514
diff changeset
214 f->async_visible = 0;
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12630
diff changeset
215 f->output_data.nothing = 0;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
216 f->iconified = 0;
1652
93497cd89204 * frame.c (make_frame): Initialize async_visible and
Jim Blandy <jimb@redhat.com>
parents: 1514
diff changeset
217 f->async_iconified = 0;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
218 f->wants_modeline = 1;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
219 f->auto_raise = 0;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
220 f->auto_lower = 0;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
221 f->no_split = 0;
27725
fb13a4706619 (make_frame): Set frame initiallly to `garbaged'.
Gerd Moellmann <gerd@gnu.org>
parents: 27633
diff changeset
222 f->garbaged = 1;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
223 f->has_minibuffer = mini_p;
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
224 f->focus_frame = Qnil;
1006
a13ee72d74a2 * frame.c (make_frame): Clear the explicit_name member of the new
Jim Blandy <jimb@redhat.com>
parents: 987
diff changeset
225 f->explicit_name = 0;
1989
b1c1ab20f810 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1920
diff changeset
226 f->can_have_scroll_bars = 0;
16263
a369af16e836 (make_frame): Switch from boolean `has_vertical_scrollbars' integer to
Richard M. Stallman <rms@gnu.org>
parents: 16184
diff changeset
227 f->vertical_scroll_bar_type = vertical_scroll_bar_none;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
228 f->param_alist = Qnil;
1989
b1c1ab20f810 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1920
diff changeset
229 f->scroll_bars = Qnil;
b1c1ab20f810 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1920
diff changeset
230 f->condemned_scroll_bars = Qnil;
2417
8c07933beed9 (make_frame): Init face_alist field.
Richard M. Stallman <rms@gnu.org>
parents: 2298
diff changeset
231 f->face_alist = Qnil;
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
232 f->face_cache = NULL;
6130
d4e5878462cb (make_frame): Init menu_bar_items field to 0.
Richard M. Stallman <rms@gnu.org>
parents: 6054
diff changeset
233 f->menu_bar_items = Qnil;
7095
098b87bde5a7 (make_frame): Initialize fields menu_bar_vector and menu_bar_items_used.
Richard M. Stallman <rms@gnu.org>
parents: 7055
diff changeset
234 f->menu_bar_vector = Qnil;
098b87bde5a7 (make_frame): Initialize fields menu_bar_vector and menu_bar_items_used.
Richard M. Stallman <rms@gnu.org>
parents: 7055
diff changeset
235 f->menu_bar_items_used = 0;
10207
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
236 f->buffer_predicate = Qnil;
17221
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
237 f->buffer_list = Qnil;
11017
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
238 #ifdef MULTI_KBOARD
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
239 f->kboard = initial_kboard;
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
240 #endif
14303
48e3ee5005cd (make_frame): Initialize title parameter to Qnil.
Karl Heuer <kwzh@gnu.org>
parents: 14223
diff changeset
241 f->namebuf = 0;
14223
596bb10704dd (make_frame): Initialize frame title field to nil.
Erik Naggum <erik@naggum.no>
parents: 14217
diff changeset
242 f->title = Qnil;
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
243 f->menu_bar_window = Qnil;
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25523
diff changeset
244 f->tool_bar_window = Qnil;
33760
22dc6e2e7410 (make_frame): Change initialization of tool bar
Gerd Moellmann <gerd@gnu.org>
parents: 33512
diff changeset
245 f->tool_bar_items = Qnil;
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25523
diff changeset
246 f->desired_tool_bar_string = f->current_tool_bar_string = Qnil;
33760
22dc6e2e7410 (make_frame): Change initialization of tool bar
Gerd Moellmann <gerd@gnu.org>
parents: 33512
diff changeset
247 f->n_tool_bar_items = 0;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248
987
afb21e974ed2 * frame.c (make_frame): Stop passing zero to make_window; it's not
Jim Blandy <jimb@redhat.com>
parents: 965
diff changeset
249 root_window = make_window ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 if (mini_p)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 {
987
afb21e974ed2 * frame.c (make_frame): Stop passing zero to make_window; it's not
Jim Blandy <jimb@redhat.com>
parents: 965
diff changeset
252 mini_window = make_window ();
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 XWINDOW (root_window)->next = mini_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 XWINDOW (mini_window)->prev = root_window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 XWINDOW (mini_window)->mini_p = Qt;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
256 XWINDOW (mini_window)->frame = frame;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
257 f->minibuffer_window = mini_window;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 mini_window = Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 XWINDOW (root_window)->next = Qnil;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
263 f->minibuffer_window = Qnil;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
266 XWINDOW (root_window)->frame = frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 /* 10 is arbitrary,
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 just so that there is "something there."
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
270 Correct size will be set up later with change_frame_size. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271
16263
a369af16e836 (make_frame): Switch from boolean `has_vertical_scrollbars' integer to
Richard M. Stallman <rms@gnu.org>
parents: 16184
diff changeset
272 SET_FRAME_WIDTH (f, 10);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
273 f->height = 10;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274
9309
27370f65dfa1 (make_frame, Fframe_parameters, Fselected_frame, syms_of_frame): Don't use
Karl Heuer <kwzh@gnu.org>
parents: 9268
diff changeset
275 XSETFASTINT (XWINDOW (root_window)->width, 10);
27370f65dfa1 (make_frame, Fframe_parameters, Fselected_frame, syms_of_frame): Don't use
Karl Heuer <kwzh@gnu.org>
parents: 9268
diff changeset
276 XSETFASTINT (XWINDOW (root_window)->height, (mini_p ? 9 : 10));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 if (mini_p)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279 {
9309
27370f65dfa1 (make_frame, Fframe_parameters, Fselected_frame, syms_of_frame): Don't use
Karl Heuer <kwzh@gnu.org>
parents: 9268
diff changeset
280 XSETFASTINT (XWINDOW (mini_window)->width, 10);
27370f65dfa1 (make_frame, Fframe_parameters, Fselected_frame, syms_of_frame): Don't use
Karl Heuer <kwzh@gnu.org>
parents: 9268
diff changeset
281 XSETFASTINT (XWINDOW (mini_window)->top, 9);
27370f65dfa1 (make_frame, Fframe_parameters, Fselected_frame, syms_of_frame): Don't use
Karl Heuer <kwzh@gnu.org>
parents: 9268
diff changeset
282 XSETFASTINT (XWINDOW (mini_window)->height, 1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
285 /* Choose a buffer for the frame's root window. */
386
6acd2a203aa8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 363
diff changeset
286 {
6acd2a203aa8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 363
diff changeset
287 Lisp_Object buf;
6acd2a203aa8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 363
diff changeset
288
6acd2a203aa8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 363
diff changeset
289 XWINDOW (root_window)->buffer = Qt;
6acd2a203aa8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 363
diff changeset
290 buf = Fcurrent_buffer ();
6acd2a203aa8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 363
diff changeset
291 /* If buf is a 'hidden' buffer (i.e. one whose name starts with
6acd2a203aa8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 363
diff changeset
292 a space), try to find another one. */
6acd2a203aa8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 363
diff changeset
293 if (XSTRING (Fbuffer_name (buf))->data[0] == ' ')
22188
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
294 buf = Fother_buffer (buf, Qnil, Qnil);
17221
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
295
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
296 /* Use set_window_buffer, not Fset_window_buffer, and don't let
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
297 hooks be run by it. The reason is that the whole frame/window
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
298 arrangement is not yet fully intialized at this point. Windows
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
299 don't have the right size, glyph matrices aren't initialized
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
300 etc. Running Lisp functions at this point surely ends in a
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
301 SEGV. */
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
302 set_window_buffer (root_window, buf, 0);
17221
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
303 f->buffer_list = Fcons (buf, Qnil);
386
6acd2a203aa8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 363
diff changeset
304 }
6acd2a203aa8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 363
diff changeset
305
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 if (mini_p)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 XWINDOW (mini_window)->buffer = Qt;
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
309 set_window_buffer (mini_window,
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
310 (NILP (Vminibuffer_list)
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
311 ? get_minibuffer (0)
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
312 : Fcar (Vminibuffer_list)),
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
313 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
316 f->root_window = root_window;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
317 f->selected_window = root_window;
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
318 /* Make sure this window seems more recently used than
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
319 a newly-created, never-selected window. */
9309
27370f65dfa1 (make_frame, Fframe_parameters, Fselected_frame, syms_of_frame): Don't use
Karl Heuer <kwzh@gnu.org>
parents: 9268
diff changeset
320 XSETFASTINT (XWINDOW (f->selected_window)->use_time, ++window_select_count);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
322 return f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324
21359
f66e706fc9d6 (make_frame_without_minibuffer): Conditionalize on HAVE_WINDOW_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 21244
diff changeset
325 #ifdef HAVE_WINDOW_SYSTEM
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
326 /* Make a frame using a separate minibuffer window on another frame.
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 MINI_WINDOW is the minibuffer window to use. nil means use the
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 default (the global minibuffer). */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
330 struct frame *
12010
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
331 make_frame_without_minibuffer (mini_window, kb, display)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 register Lisp_Object mini_window;
11775
fe7852953b75 (make_frame_without_minibuffer): New arg KB.
Karl Heuer <kwzh@gnu.org>
parents: 11773
diff changeset
333 KBOARD *kb;
12010
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
334 Lisp_Object display;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
336 register struct frame *f;
15555
5ceed3aa6a1c (make_frame_without_minibuffer): GCPRO the frame f.
Richard M. Stallman <rms@gnu.org>
parents: 15396
diff changeset
337 struct gcpro gcpro1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338
12010
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
339 if (!NILP (mini_window))
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
340 CHECK_LIVE_WINDOW (mini_window, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341
11775
fe7852953b75 (make_frame_without_minibuffer): New arg KB.
Karl Heuer <kwzh@gnu.org>
parents: 11773
diff changeset
342 #ifdef MULTI_KBOARD
12010
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
343 if (!NILP (mini_window)
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
344 && XFRAME (XWINDOW (mini_window)->frame)->kboard != kb)
11775
fe7852953b75 (make_frame_without_minibuffer): New arg KB.
Karl Heuer <kwzh@gnu.org>
parents: 11773
diff changeset
345 error ("frame and minibuffer must be on the same display");
fe7852953b75 (make_frame_without_minibuffer): New arg KB.
Karl Heuer <kwzh@gnu.org>
parents: 11773
diff changeset
346 #endif
fe7852953b75 (make_frame_without_minibuffer): New arg KB.
Karl Heuer <kwzh@gnu.org>
parents: 11773
diff changeset
347
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
348 /* Make a frame containing just a root window. */
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
349 f = make_frame (0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350
12010
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
351 if (NILP (mini_window))
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
352 {
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
353 /* Use default-minibuffer-frame if possible. */
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
354 if (!FRAMEP (kb->Vdefault_minibuffer_frame)
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
355 || ! FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame)))
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
356 {
15555
5ceed3aa6a1c (make_frame_without_minibuffer): GCPRO the frame f.
Richard M. Stallman <rms@gnu.org>
parents: 15396
diff changeset
357 Lisp_Object frame_dummy;
5ceed3aa6a1c (make_frame_without_minibuffer): GCPRO the frame f.
Richard M. Stallman <rms@gnu.org>
parents: 15396
diff changeset
358
5ceed3aa6a1c (make_frame_without_minibuffer): GCPRO the frame f.
Richard M. Stallman <rms@gnu.org>
parents: 15396
diff changeset
359 XSETFRAME (frame_dummy, f);
5ceed3aa6a1c (make_frame_without_minibuffer): GCPRO the frame f.
Richard M. Stallman <rms@gnu.org>
parents: 15396
diff changeset
360 GCPRO1 (frame_dummy);
12010
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
361 /* If there's no minibuffer frame to use, create one. */
15555
5ceed3aa6a1c (make_frame_without_minibuffer): GCPRO the frame f.
Richard M. Stallman <rms@gnu.org>
parents: 15396
diff changeset
362 kb->Vdefault_minibuffer_frame =
5ceed3aa6a1c (make_frame_without_minibuffer): GCPRO the frame f.
Richard M. Stallman <rms@gnu.org>
parents: 15396
diff changeset
363 call1 (intern ("make-initial-minibuffer-frame"), display);
5ceed3aa6a1c (make_frame_without_minibuffer): GCPRO the frame f.
Richard M. Stallman <rms@gnu.org>
parents: 15396
diff changeset
364 UNGCPRO;
12010
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
365 }
15555
5ceed3aa6a1c (make_frame_without_minibuffer): GCPRO the frame f.
Richard M. Stallman <rms@gnu.org>
parents: 15396
diff changeset
366
12010
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
367 mini_window = XFRAME (kb->Vdefault_minibuffer_frame)->minibuffer_window;
57eb365d32f0 (make_frame_without_minibuffer): New arg DISPLAY.
Karl Heuer <kwzh@gnu.org>
parents: 12006
diff changeset
368 }
15001
c74ce6421d04 (make_frame_without_minibuffer): Don't change the
Richard M. Stallman <rms@gnu.org>
parents: 14966
diff changeset
369
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
370 f->minibuffer_window = mini_window;
15001
c74ce6421d04 (make_frame_without_minibuffer): Don't change the
Richard M. Stallman <rms@gnu.org>
parents: 14966
diff changeset
371
c74ce6421d04 (make_frame_without_minibuffer): Don't change the
Richard M. Stallman <rms@gnu.org>
parents: 14966
diff changeset
372 /* Make the chosen minibuffer window display the proper minibuffer,
c74ce6421d04 (make_frame_without_minibuffer): Don't change the
Richard M. Stallman <rms@gnu.org>
parents: 14966
diff changeset
373 unless it is already showing a minibuffer. */
c74ce6421d04 (make_frame_without_minibuffer): Don't change the
Richard M. Stallman <rms@gnu.org>
parents: 14966
diff changeset
374 if (NILP (Fmemq (XWINDOW (mini_window)->buffer, Vminibuffer_list)))
c74ce6421d04 (make_frame_without_minibuffer): Don't change the
Richard M. Stallman <rms@gnu.org>
parents: 14966
diff changeset
375 Fset_window_buffer (mini_window,
c74ce6421d04 (make_frame_without_minibuffer): Don't change the
Richard M. Stallman <rms@gnu.org>
parents: 14966
diff changeset
376 (NILP (Vminibuffer_list)
c74ce6421d04 (make_frame_without_minibuffer): Don't change the
Richard M. Stallman <rms@gnu.org>
parents: 14966
diff changeset
377 ? get_minibuffer (0)
c74ce6421d04 (make_frame_without_minibuffer): Don't change the
Richard M. Stallman <rms@gnu.org>
parents: 14966
diff changeset
378 : Fcar (Vminibuffer_list)));
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
379 return f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
382 /* Make a frame containing only a minibuffer window. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
384 struct frame *
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
385 make_minibuffer_frame ()
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
387 /* First make a frame containing just a root window, no minibuffer. */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
389 register struct frame *f = make_frame (0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 register Lisp_Object mini_window;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
391 register Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392
9268
cb55d0155265 (make_minibuffer_frame, make_terminal_frame, Fselected_frame,
Karl Heuer <kwzh@gnu.org>
parents: 9214
diff changeset
393 XSETFRAME (frame, f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394
1006
a13ee72d74a2 * frame.c (make_frame): Clear the explicit_name member of the new
Jim Blandy <jimb@redhat.com>
parents: 987
diff changeset
395 f->auto_raise = 0;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
396 f->auto_lower = 0;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
397 f->no_split = 1;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
398 f->wants_modeline = 0;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
399 f->has_minibuffer = 1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 /* Now label the root window as also being the minibuffer.
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 Avoid infinite looping on the window chain by marking next pointer
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 as nil. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
405 mini_window = f->minibuffer_window = f->root_window;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 XWINDOW (mini_window)->mini_p = Qt;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 XWINDOW (mini_window)->next = Qnil;
1006
a13ee72d74a2 * frame.c (make_frame): Clear the explicit_name member of the new
Jim Blandy <jimb@redhat.com>
parents: 987
diff changeset
408 XWINDOW (mini_window)->prev = Qnil;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
409 XWINDOW (mini_window)->frame = frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 /* Put the proper buffer in that window. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 Fset_window_buffer (mini_window,
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 454
diff changeset
414 (NILP (Vminibuffer_list)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 ? get_minibuffer (0)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 : Fcar (Vminibuffer_list)));
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
417 return f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 }
21359
f66e706fc9d6 (make_frame_without_minibuffer): Conditionalize on HAVE_WINDOW_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 21244
diff changeset
419 #endif /* HAVE_WINDOW_SYSTEM */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
421 /* Construct a frame that refers to the terminal (stdin and stdout). */
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
423 static int terminal_frame_count;
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
424
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
425 struct frame *
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
426 make_terminal_frame ()
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
428 register struct frame *f;
5231
6646271e8d32 (make_terminal_frame): Add frame to Vframe_list.
Richard M. Stallman <rms@gnu.org>
parents: 5172
diff changeset
429 Lisp_Object frame;
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
430 char name[20];
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431
11017
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
432 #ifdef MULTI_KBOARD
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
433 if (!initial_kboard)
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
434 {
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
435 initial_kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
436 init_kboard (initial_kboard);
11364
9c609a5bd245 (make_terminal_frame): all_kboards means initial_kboard too.
Karl Heuer <kwzh@gnu.org>
parents: 11355
diff changeset
437 initial_kboard->next_kboard = all_kboards;
9c609a5bd245 (make_terminal_frame): all_kboards means initial_kboard too.
Karl Heuer <kwzh@gnu.org>
parents: 11355
diff changeset
438 all_kboards = initial_kboard;
11017
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
439 }
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
440 #endif
f7c4ece024d5 (make_frame): Initialize kboard member.
Karl Heuer <kwzh@gnu.org>
parents: 10853
diff changeset
441
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
442 /* The first call must initialize Vframe_list. */
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
443 if (! (NILP (Vframe_list) || CONSP (Vframe_list)))
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
444 Vframe_list = Qnil;
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
445
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
446 f = make_frame (1);
5231
6646271e8d32 (make_terminal_frame): Add frame to Vframe_list.
Richard M. Stallman <rms@gnu.org>
parents: 5172
diff changeset
447
9268
cb55d0155265 (make_minibuffer_frame, make_terminal_frame, Fselected_frame,
Karl Heuer <kwzh@gnu.org>
parents: 9214
diff changeset
448 XSETFRAME (frame, f);
5231
6646271e8d32 (make_terminal_frame): Add frame to Vframe_list.
Richard M. Stallman <rms@gnu.org>
parents: 5172
diff changeset
449 Vframe_list = Fcons (frame, Vframe_list);
6646271e8d32 (make_terminal_frame): Add frame to Vframe_list.
Richard M. Stallman <rms@gnu.org>
parents: 5172
diff changeset
450
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
451 terminal_frame_count++;
17857
c39f34ef5d76 (make_terminal_frame): Don't add `Emacs' to frame name.
Richard M. Stallman <rms@gnu.org>
parents: 17573
diff changeset
452 sprintf (name, "F%d", terminal_frame_count);
c39f34ef5d76 (make_terminal_frame): Don't add `Emacs' to frame name.
Richard M. Stallman <rms@gnu.org>
parents: 17573
diff changeset
453 f->name = build_string (name);
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
454
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
455 f->visible = 1; /* FRAME_SET_VISIBLE wd set frame_garbaged. */
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
456 f->async_visible = 1; /* Don't let visible be cleared later. */
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
457 #ifdef MSDOS
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
458 f->output_data.x = &the_only_x_display;
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
459 if (!inhibit_window_system
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
460 && (!FRAMEP (selected_frame) || !FRAME_LIVE_P (XFRAME (selected_frame))
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
461 || XFRAME (selected_frame)->output_method == output_msdos_raw))
31470
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
462 {
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
463 f->output_method = output_msdos_raw;
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
464 /* This initialization of foreground and background pixels is
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
465 only important for the initial frame created in temacs. If
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
466 we don't do that, we get black background and foreground in
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
467 the dumped Emacs because the_only_x_display is a static
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
468 variable, hence it is born all-zeroes, and zero is the code
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
469 for the black color. Other frames all inherit their pixels
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
470 from what's already in the_only_x_display. */
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
471 if ((!FRAMEP (selected_frame) || !FRAME_LIVE_P (XFRAME (selected_frame)))
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
472 && f->output_data.x->background_pixel == 0
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
473 && f->output_data.x->foreground_pixel == 0)
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
474 {
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
475 f->output_data.x->background_pixel = FACE_TTY_DEFAULT_BG_COLOR;
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
476 f->output_data.x->foreground_pixel = FACE_TTY_DEFAULT_FG_COLOR;
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
477 }
2e399023961d (make_terminal_frame): Initialize frame foreground and
Eli Zaretskii <eliz@gnu.org>
parents: 31448
diff changeset
478 }
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
479 else
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
480 f->output_method = output_termcap;
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
481 #else
35003
c6726a1e70ce (make_terminal_frame) [WINDOWSNT]: Make terminal frames
Andrew Innes <andrewi@gnu.org>
parents: 33760
diff changeset
482 #ifdef WINDOWSNT
35447
c6cb860208d8 (Qw32_console): Remove variable.
Andrew Innes <andrewi@gnu.org>
parents: 35003
diff changeset
483 f->output_method = output_termcap;
35003
c6726a1e70ce (make_terminal_frame) [WINDOWSNT]: Make terminal frames
Andrew Innes <andrewi@gnu.org>
parents: 33760
diff changeset
484 f->output_data.x = &tty_display;
c6726a1e70ce (make_terminal_frame) [WINDOWSNT]: Make terminal frames
Andrew Innes <andrewi@gnu.org>
parents: 33760
diff changeset
485 #else
25523
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
486 #ifdef macintosh
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32545
diff changeset
487 make_mac_terminal_frame (f);
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32545
diff changeset
488 #else
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
489 f->output_data.x = &tty_display;
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32545
diff changeset
490 #endif /* macintosh */
35003
c6726a1e70ce (make_terminal_frame) [WINDOWSNT]: Make terminal frames
Andrew Innes <andrewi@gnu.org>
parents: 33760
diff changeset
491 #endif /* WINDOWSNT */
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
492 #endif /* MSDOS */
25523
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
493
25117
f6f34f0bc1af (make_terminal_frame) [MSDOS]: Don't call
Eli Zaretskii <eliz@gnu.org>
parents: 25030
diff changeset
494 if (!noninteractive)
f6f34f0bc1af (make_terminal_frame) [MSDOS]: Don't call
Eli Zaretskii <eliz@gnu.org>
parents: 25030
diff changeset
495 init_frame_faces (f);
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32545
diff changeset
496
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
497 return f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 }
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
499
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
500 DEFUN ("make-terminal-frame", Fmake_terminal_frame, Smake_terminal_frame,
10783
bb2d929daaa3 (Fmake_terminal_frame): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10768
diff changeset
501 1, 1, 0, "Create an additional terminal frame.\n\
bb2d929daaa3 (Fmake_terminal_frame): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10768
diff changeset
502 You can create multiple frames on a text-only terminal in this way.\n\
bb2d929daaa3 (Fmake_terminal_frame): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10768
diff changeset
503 Only the selected terminal frame is actually displayed.\n\
bb2d929daaa3 (Fmake_terminal_frame): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10768
diff changeset
504 This function takes one argument, an alist specifying frame parameters.\n\
bb2d929daaa3 (Fmake_terminal_frame): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10768
diff changeset
505 In practice, generally you don't need to specify any parameters.\n\
bb2d929daaa3 (Fmake_terminal_frame): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10768
diff changeset
506 Note that changing the size of one terminal frame automatically affects all.")
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
507 (parms)
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
508 Lisp_Object parms;
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
509 {
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
510 struct frame *f;
25523
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
511 Lisp_Object frame, tem;
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
512 struct frame *sf = SELECTED_FRAME ();
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
513
15392
ac7e878c5526 (Fmake_terminal_frame): Test MSDOS, not __MSDOS__.
Richard M. Stallman <rms@gnu.org>
parents: 15391
diff changeset
514 #ifdef MSDOS
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
515 if (sf->output_method != output_msdos_raw
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
516 && sf->output_method != output_termcap)
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
517 abort ();
25523
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
518 #else /* not MSDOS */
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
519
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
520 #ifdef macintosh
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
521 if (sf->output_method != output_mac)
25523
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
522 error ("Not running on a Macintosh screen; cannot make a new Macintosh frame");
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
523 #else
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
524 if (sf->output_method != output_termcap)
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
525 error ("Not using an ASCII terminal now; cannot make a new ASCII frame");
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
526 #endif
25523
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
527 #endif /* not MSDOS */
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
528
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
529 f = make_terminal_frame ();
25523
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
530
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
531 change_frame_size (f, FRAME_HEIGHT (sf),
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
532 FRAME_WIDTH (sf), 0, 0, 0);
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
533 adjust_glyphs (f);
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
534 calculate_costs (f);
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
535 XSETFRAME (frame, f);
16184
ca018789eb73 (Fmake_terminal_frame): Use Vdefault_frame_alist.
Richard M. Stallman <rms@gnu.org>
parents: 16112
diff changeset
536 Fmodify_frame_parameters (frame, Vdefault_frame_alist);
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
537 Fmodify_frame_parameters (frame, parms);
25209
eea9647c8246 (Fframe_parameters): Swap foreground and background
Eli Zaretskii <eliz@gnu.org>
parents: 25158
diff changeset
538
eea9647c8246 (Fframe_parameters): Swap foreground and background
Eli Zaretskii <eliz@gnu.org>
parents: 25158
diff changeset
539 /* Make the frame face alist be frame-specific, so that each
eea9647c8246 (Fframe_parameters): Swap foreground and background
Eli Zaretskii <eliz@gnu.org>
parents: 25158
diff changeset
540 frame could change its face definitions independently. */
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
541 f->face_alist = Fcopy_alist (sf->face_alist);
25209
eea9647c8246 (Fframe_parameters): Swap foreground and background
Eli Zaretskii <eliz@gnu.org>
parents: 25158
diff changeset
542 /* Simple Fcopy_alist isn't enough, because we need the contents of
eea9647c8246 (Fframe_parameters): Swap foreground and background
Eli Zaretskii <eliz@gnu.org>
parents: 25158
diff changeset
543 the vectors which are the CDRs of associations in face_alist to
eea9647c8246 (Fframe_parameters): Swap foreground and background
Eli Zaretskii <eliz@gnu.org>
parents: 25158
diff changeset
544 be copied as well. */
eea9647c8246 (Fframe_parameters): Swap foreground and background
Eli Zaretskii <eliz@gnu.org>
parents: 25158
diff changeset
545 for (tem = f->face_alist; CONSP (tem); tem = XCDR (tem))
eea9647c8246 (Fframe_parameters): Swap foreground and background
Eli Zaretskii <eliz@gnu.org>
parents: 25158
diff changeset
546 XCDR (XCAR (tem)) = Fcopy_sequence (XCDR (XCAR (tem)));
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
547 return frame;
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
548 }
36810
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
549
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550
36810
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
551 /* Perform the switch to frame FRAME.
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
552
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
553 If FRAME is a switch-frame event `(switch-frame FRAME1)', use
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
554 FRAME1 as frame.
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
555
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
556 If TRACK is non-zero and the frame that currently has the focus
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
557 redirects its focus to the selected frame, redirect that focused
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
558 frame's focus to FRAME instead.
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
559
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
560 FOR_DELETION non-zero means that the selected frame is being
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
561 deleted, which includes the possibility that the frame's display
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
562 is dead. */
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
563
12286
723569a0028c (Fdelete_frame): Use do_switch_frame directly.
Richard M. Stallman <rms@gnu.org>
parents: 12283
diff changeset
564 Lisp_Object
36810
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
565 do_switch_frame (frame, track, for_deletion)
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
566 Lisp_Object frame;
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
567 int track, for_deletion;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 {
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
569 struct frame *sf = SELECTED_FRAME ();
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
570
1385
a4a205bdd2c1 * frame.c: #include "commands.h" and "keyboard.h".
Jim Blandy <jimb@redhat.com>
parents: 1346
diff changeset
571 /* If FRAME is a switch-frame event, extract the frame we should
a4a205bdd2c1 * frame.c: #include "commands.h" and "keyboard.h".
Jim Blandy <jimb@redhat.com>
parents: 1346
diff changeset
572 switch to. */
a4a205bdd2c1 * frame.c: #include "commands.h" and "keyboard.h".
Jim Blandy <jimb@redhat.com>
parents: 1346
diff changeset
573 if (CONSP (frame)
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
574 && EQ (XCAR (frame), Qswitch_frame)
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
575 && CONSP (XCDR (frame)))
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
576 frame = XCAR (XCDR (frame));
1385
a4a205bdd2c1 * frame.c: #include "commands.h" and "keyboard.h".
Jim Blandy <jimb@redhat.com>
parents: 1346
diff changeset
577
6352
6f48bd9145f9 (Fhandle_switch_frame): Ignore switch to dead frame.
Karl Heuer <kwzh@gnu.org>
parents: 6346
diff changeset
578 /* This used to say CHECK_LIVE_FRAME, but apparently it's possible for
6f48bd9145f9 (Fhandle_switch_frame): Ignore switch to dead frame.
Karl Heuer <kwzh@gnu.org>
parents: 6346
diff changeset
579 a switch-frame event to arrive after a frame is no longer live,
6f48bd9145f9 (Fhandle_switch_frame): Ignore switch to dead frame.
Karl Heuer <kwzh@gnu.org>
parents: 6346
diff changeset
580 especially when deleting the initial frame during startup. */
6f48bd9145f9 (Fhandle_switch_frame): Ignore switch to dead frame.
Karl Heuer <kwzh@gnu.org>
parents: 6346
diff changeset
581 CHECK_FRAME (frame, 0);
6f48bd9145f9 (Fhandle_switch_frame): Ignore switch to dead frame.
Karl Heuer <kwzh@gnu.org>
parents: 6346
diff changeset
582 if (! FRAME_LIVE_P (XFRAME (frame)))
6f48bd9145f9 (Fhandle_switch_frame): Ignore switch to dead frame.
Karl Heuer <kwzh@gnu.org>
parents: 6346
diff changeset
583 return Qnil;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
584
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
585 if (sf == XFRAME (frame))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
586 return frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
588 /* This is too greedy; it causes inappropriate focus redirection
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
589 that's hard to get rid of. */
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
590 #if 0
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
591 /* If a frame's focus has been redirected toward the currently
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
592 selected frame, we should change the redirection to point to the
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
593 newly selected frame. This means that if the focus is redirected
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
594 from a minibufferless frame to a surrogate minibuffer frame, we
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
595 can use `other-window' to switch between all the frames using
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
596 that minibuffer frame, and the focus redirection will follow us
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
597 around. */
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
598 if (track)
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
599 {
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
600 Lisp_Object tail;
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
601
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
602 for (tail = Vframe_list; CONSP (tail); tail = XCDR (tail))
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
603 {
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
604 Lisp_Object focus;
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
605
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
606 if (!FRAMEP (XCAR (tail)))
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
607 abort ();
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
608
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
609 focus = FRAME_FOCUS_FRAME (XFRAME (XCAR (tail)));
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
610
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
611 if (FRAMEP (focus) && XFRAME (focus) == SELECTED_FRAME ())
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
612 Fredirect_frame_focus (XCAR (tail), frame);
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
613 }
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
614 }
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
615 #else /* ! 0 */
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
616 /* Instead, apply it only to the frame we're pointing to. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
617 #ifdef HAVE_WINDOW_SYSTEM
36810
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
618 if (track && FRAME_WINDOW_P (XFRAME (frame)))
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
619 {
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
620 Lisp_Object focus, xfocus;
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
621
11529
5beffe62d4ef (do_switch_frame): x_get_focus_frame needs an arg.
Karl Heuer <kwzh@gnu.org>
parents: 11495
diff changeset
622 xfocus = x_get_focus_frame (XFRAME (frame));
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
623 if (FRAMEP (xfocus))
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
624 {
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
625 focus = FRAME_FOCUS_FRAME (XFRAME (xfocus));
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
626 if (FRAMEP (focus) && XFRAME (focus) == SELECTED_FRAME ())
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
627 Fredirect_frame_focus (xfocus, frame);
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
628 }
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
629 }
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
630 #endif /* HAVE_X_WINDOWS */
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
631 #endif /* ! 0 */
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
632
36810
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
633 if (!for_deletion && FRAME_HAS_MINIBUF_P (sf))
35611
3e7efd5ea1da (do_switch_frame): If selected frame has a mini-window,
Gerd Moellmann <gerd@gnu.org>
parents: 35447
diff changeset
634 resize_mini_window (XWINDOW (FRAME_MINIBUF_WINDOW (sf)), 1);
3e7efd5ea1da (do_switch_frame): If selected frame has a mini-window,
Gerd Moellmann <gerd@gnu.org>
parents: 35447
diff changeset
635
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
636 selected_frame = frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
637 if (! FRAME_MINIBUF_ONLY_P (XFRAME (selected_frame)))
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
638 last_nonminibuf_frame = XFRAME (selected_frame);
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
639
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
640 Fselect_window (XFRAME (frame)->selected_window);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
641
1920
ac5e559a819a * frame.c (Fselect_frame): Set Vlast_event_frame to Qnil after
Jim Blandy <jimb@redhat.com>
parents: 1870
diff changeset
642 /* We want to make sure that the next event generates a frame-switch
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3497
diff changeset
643 event to the appropriate frame. This seems kludgy to me, but
1920
ac5e559a819a * frame.c (Fselect_frame): Set Vlast_event_frame to Qnil after
Jim Blandy <jimb@redhat.com>
parents: 1870
diff changeset
644 before you take it out, make sure that evaluating something like
ac5e559a819a * frame.c (Fselect_frame): Set Vlast_event_frame to Qnil after
Jim Blandy <jimb@redhat.com>
parents: 1870
diff changeset
645 (select-window (frame-root-window (new-frame))) doesn't end up
ac5e559a819a * frame.c (Fselect_frame): Set Vlast_event_frame to Qnil after
Jim Blandy <jimb@redhat.com>
parents: 1870
diff changeset
646 with your typing being interpreted in the new frame instead of
ac5e559a819a * frame.c (Fselect_frame): Set Vlast_event_frame to Qnil after
Jim Blandy <jimb@redhat.com>
parents: 1870
diff changeset
647 the one you're actually typing in. */
10853
3db086133785 (do_switch_frame): Undo Feb 6 change.
Karl Heuer <kwzh@gnu.org>
parents: 10851
diff changeset
648 internal_last_event_frame = Qnil;
1920
ac5e559a819a * frame.c (Fselect_frame): Set Vlast_event_frame to Qnil after
Jim Blandy <jimb@redhat.com>
parents: 1870
diff changeset
649
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
650 return frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
652
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
653 DEFUN ("select-frame", Fselect_frame, Sselect_frame, 1, 2, "e",
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
654 "Select the frame FRAME.\n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
655 Subsequent editing commands apply to its selected window.\n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
656 The selection of FRAME lasts until the next time the user does\n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
657 something to select a different frame, or until the next time this\n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
658 function is called.")
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
659 (frame, no_enter)
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
660 Lisp_Object frame, no_enter;
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
661 {
36810
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
662 return do_switch_frame (frame, 1, 0);
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
663 }
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
664
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
665
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
666 DEFUN ("handle-switch-frame", Fhandle_switch_frame, Shandle_switch_frame, 1, 2, "e",
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
667 "Handle a switch-frame event EVENT.\n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
668 Switch-frame events are usually bound to this function.\n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
669 A switch-frame event tells Emacs that the window manager has requested\n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
670 that the user's events be directed to the frame mentioned in the event.\n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
671 This function selects the selected window of the frame of EVENT.\n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
672 \n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
673 If EVENT is frame object, handle it as if it were a switch-frame event\n\
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
674 to that frame.")
14077
a6d3ce4a2f8e (Fhandle_switch_frame, Fset_frame_height): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13748
diff changeset
675 (event, no_enter)
a6d3ce4a2f8e (Fhandle_switch_frame, Fset_frame_height): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13748
diff changeset
676 Lisp_Object event, no_enter;
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
677 {
12255
41083bd094ac (Fhandle_switch_frame): Preserve prefix arg.
Karl Heuer <kwzh@gnu.org>
parents: 12222
diff changeset
678 /* Preserve prefix arg that the command loop just cleared. */
41083bd094ac (Fhandle_switch_frame): Preserve prefix arg.
Karl Heuer <kwzh@gnu.org>
parents: 12222
diff changeset
679 current_kboard->Vprefix_arg = Vcurrent_prefix_arg;
13106
22011e724596 (Qmouse_leave_buffer_hook): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 12987
diff changeset
680 call1 (Vrun_hooks, Qmouse_leave_buffer_hook);
36810
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
681 return do_switch_frame (event, 0, 0);
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
682 }
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
683
12283
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
684 DEFUN ("ignore-event", Fignore_event, Signore_event, 0, 0, "",
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
685 "Do nothing, but preserve any prefix argument already specified.\n\
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
686 This is a suitable binding for iconify-frame and make-frame-visible.")
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
687 ()
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
688 {
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
689 current_kboard->Vprefix_arg = Vcurrent_prefix_arg;
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
690 return Qnil;
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
691 }
6486
5012ae9c6075 (do_switch_frame): Common code for Fselect_frame and handle_switch_frame.
Karl Heuer <kwzh@gnu.org>
parents: 6355
diff changeset
692
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
693 DEFUN ("selected-frame", Fselected_frame, Sselected_frame, 0, 0, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
694 "Return the frame that is now selected.")
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695 ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696 {
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
697 return selected_frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698 }
7055
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
699
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
700 DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
701 "Return the frame object that window WINDOW is on.")
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 (window)
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703 Lisp_Object window;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 {
1437
36ef55ecb265 * frame.c (make_frame_without_minibuffer, Fwindow_frame): Use
Jim Blandy <jimb@redhat.com>
parents: 1385
diff changeset
705 CHECK_LIVE_WINDOW (window, 0);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
706 return XWINDOW (window)->frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708
6527
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
709 DEFUN ("frame-first-window", Fframe_first_window, Sframe_first_window, 0, 1, 0,
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
710 "Returns the topmost, leftmost window of FRAME.\n\
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
711 If omitted, FRAME defaults to the currently selected frame.")
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
712 (frame)
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
713 Lisp_Object frame;
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
714 {
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
715 Lisp_Object w;
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
716
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
717 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
718 w = SELECTED_FRAME ()->root_window;
6527
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
719 else
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
720 {
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
721 CHECK_LIVE_FRAME (frame, 0);
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
722 w = XFRAME (frame)->root_window;
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
723 }
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
724 while (NILP (XWINDOW (w)->buffer))
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
725 {
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
726 if (! NILP (XWINDOW (w)->hchild))
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
727 w = XWINDOW (w)->hchild;
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
728 else if (! NILP (XWINDOW (w)->vchild))
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
729 w = XWINDOW (w)->vchild;
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
730 else
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
731 abort ();
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
732 }
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
733 return w;
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
734 }
ab9f20a3f502 (Fframe_first_window): New function.
Karl Heuer <kwzh@gnu.org>
parents: 6500
diff changeset
735
11169
d0550c056e5b [MULTI_FRAME] (Factive_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 11126
diff changeset
736 DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
d0550c056e5b [MULTI_FRAME] (Factive_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 11126
diff changeset
737 Sactive_minibuffer_window, 0, 0, 0,
d0550c056e5b [MULTI_FRAME] (Factive_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 11126
diff changeset
738 "Return the currently active minibuffer window, or nil if none.")
d0550c056e5b [MULTI_FRAME] (Factive_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 11126
diff changeset
739 ()
d0550c056e5b [MULTI_FRAME] (Factive_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 11126
diff changeset
740 {
d0550c056e5b [MULTI_FRAME] (Factive_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 11126
diff changeset
741 return minibuf_level ? minibuf_window : Qnil;
d0550c056e5b [MULTI_FRAME] (Factive_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 11126
diff changeset
742 }
d0550c056e5b [MULTI_FRAME] (Factive_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 11126
diff changeset
743
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
744 DEFUN ("frame-root-window", Fframe_root_window, Sframe_root_window, 0, 1, 0,
1251
4e556fda7a4d * frame.c (Fselect_frame, Fframe_root_window,
Jim Blandy <jimb@redhat.com>
parents: 1118
diff changeset
745 "Returns the root-window of FRAME.\n\
4e556fda7a4d * frame.c (Fselect_frame, Fframe_root_window,
Jim Blandy <jimb@redhat.com>
parents: 1118
diff changeset
746 If omitted, FRAME defaults to the currently selected frame.")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
747 (frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
748 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 {
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
750 Lisp_Object window;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
751
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
752 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
753 window = SELECTED_FRAME ()->root_window;
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
754 else
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
755 {
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
756 CHECK_LIVE_FRAME (frame, 0);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
757 window = XFRAME (frame)->root_window;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
758 }
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
759
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
760 return window;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
761 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
762
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
763 DEFUN ("frame-selected-window", Fframe_selected_window,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
764 Sframe_selected_window, 0, 1, 0,
1251
4e556fda7a4d * frame.c (Fselect_frame, Fframe_root_window,
Jim Blandy <jimb@redhat.com>
parents: 1118
diff changeset
765 "Return the selected window of frame object FRAME.\n\
4e556fda7a4d * frame.c (Fselect_frame, Fframe_root_window,
Jim Blandy <jimb@redhat.com>
parents: 1118
diff changeset
766 If omitted, FRAME defaults to the currently selected frame.")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
767 (frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
768 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769 {
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
770 Lisp_Object window;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
771
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
772 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
773 window = SELECTED_FRAME ()->selected_window;
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
774 else
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
775 {
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
776 CHECK_LIVE_FRAME (frame, 0);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
777 window = XFRAME (frame)->selected_window;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
778 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
780 return window;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782
7055
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
783 DEFUN ("set-frame-selected-window", Fset_frame_selected_window,
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
784 Sset_frame_selected_window, 2, 2, 0,
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
785 "Set the selected window of frame object FRAME to WINDOW.\n\
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
786 If FRAME is nil, the selected frame is used.\n\
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
787 If FRAME is the selected frame, this makes WINDOW the selected window.")
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
788 (frame, window)
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
789 Lisp_Object frame, window;
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
790 {
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
791 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
792 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
793
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
794 CHECK_LIVE_FRAME (frame, 0);
7055
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
795 CHECK_LIVE_WINDOW (window, 1);
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
796
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
797 if (! EQ (frame, WINDOW_FRAME (XWINDOW (window))))
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
798 error ("In `set-frame-selected-window', WINDOW is not on FRAME");
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
799
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
800 if (EQ (frame, selected_frame))
7055
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
801 return Fselect_window (window);
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
802
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
803 return XFRAME (frame)->selected_window = window;
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
804 }
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
805
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
806 DEFUN ("frame-list", Fframe_list, Sframe_list,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 0, 0, 0,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
808 "Return a list of all frames.")
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
809 ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
810 {
36971
3819e613c7c2 (Fframe_list): Don't return a tooltip frame.
Gerd Moellmann <gerd@gnu.org>
parents: 36810
diff changeset
811 Lisp_Object frames;
3819e613c7c2 (Fframe_list): Don't return a tooltip frame.
Gerd Moellmann <gerd@gnu.org>
parents: 36810
diff changeset
812 frames = Fcopy_sequence (Vframe_list);
36984
1b91be709189 (Fframe_list): Don't reference tip_frame if HAVE_WINDOW_SYSTEM is not defined.
Eli Zaretskii <eliz@gnu.org>
parents: 36971
diff changeset
813 #ifdef HAVE_WINDOW_SYSTEM
36971
3819e613c7c2 (Fframe_list): Don't return a tooltip frame.
Gerd Moellmann <gerd@gnu.org>
parents: 36810
diff changeset
814 if (FRAMEP (tip_frame))
3819e613c7c2 (Fframe_list): Don't return a tooltip frame.
Gerd Moellmann <gerd@gnu.org>
parents: 36810
diff changeset
815 frames = Fdelq (tip_frame, frames);
36984
1b91be709189 (Fframe_list): Don't reference tip_frame if HAVE_WINDOW_SYSTEM is not defined.
Eli Zaretskii <eliz@gnu.org>
parents: 36971
diff changeset
816 #endif
36971
3819e613c7c2 (Fframe_list): Don't return a tooltip frame.
Gerd Moellmann <gerd@gnu.org>
parents: 36810
diff changeset
817 return frames;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
819
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
820 /* Return the next frame in the frame list after FRAME.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
821 If MINIBUF is nil, exclude minibuffer-only frames.
8168
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
822 If MINIBUF is a window, include only its own frame
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
823 and any frame now using that window as the minibuffer.
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
824 If MINIBUF is `visible', include all visible frames.
8168
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
825 If MINIBUF is 0, include all visible and iconified frames.
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
826 Otherwise, include all frames. */
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
827
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828 Lisp_Object
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
829 next_frame (frame, minibuf)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
830 Lisp_Object frame;
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
831 Lisp_Object minibuf;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 Lisp_Object tail;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834 int passed = 0;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
836 /* There must always be at least one frame in Vframe_list. */
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
837 if (! CONSP (Vframe_list))
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
838 abort ();
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
839
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
840 /* If this frame is dead, it won't be in Vframe_list, and we'll loop
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
841 forever. Forestall that. */
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
842 CHECK_LIVE_FRAME (frame, 0);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
843
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
844 while (1)
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
845 for (tail = Vframe_list; CONSP (tail); tail = XCDR (tail))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
846 {
6500
551bff5cffde (next_frame, prev_frame, other_visible_frames, Fdelete_frame): Use assignment,
Karl Heuer <kwzh@gnu.org>
parents: 6486
diff changeset
847 Lisp_Object f;
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
848
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
849 f = XCAR (tail);
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
850
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
851 if (passed
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
852 && FRAME_KBOARD (XFRAME (f)) == FRAME_KBOARD (XFRAME (frame)))
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
853 {
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
854 /* Decide whether this frame is eligible to be returned. */
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
855
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
856 /* If we've looped all the way around without finding any
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
857 eligible frames, return the original frame. */
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
858 if (EQ (f, frame))
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
859 return f;
335
33aa13a3f279 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 286
diff changeset
860
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
861 /* Let minibuf decide if this frame is acceptable. */
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
862 if (NILP (minibuf))
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
863 {
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
864 if (! FRAME_MINIBUF_ONLY_P (XFRAME (f)))
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
865 return f;
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
866 }
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
867 else if (EQ (minibuf, Qvisible))
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
868 {
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
869 FRAME_SAMPLE_VISIBILITY (XFRAME (f));
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
870 if (FRAME_VISIBLE_P (XFRAME (f)))
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
871 return f;
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
872 }
29987
c38afaed3dd0 (next_frame): Don't check frame-focus redirection in
Gerd Moellmann <gerd@gnu.org>
parents: 29616
diff changeset
873 else if (INTEGERP (minibuf) && XINT (minibuf) == 0)
8168
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
874 {
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
875 FRAME_SAMPLE_VISIBILITY (XFRAME (f));
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
876 if (FRAME_VISIBLE_P (XFRAME (f))
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
877 || FRAME_ICONIFIED_P (XFRAME (f)))
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
878 return f;
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
879 }
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
880 else if (WINDOWP (minibuf))
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
881 {
8168
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
882 if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf)
29995
ec33931795c4 (next_frame, prev_frame): If MINIBUF is a window,
Gerd Moellmann <gerd@gnu.org>
parents: 29987
diff changeset
883 || EQ (WINDOW_FRAME (XWINDOW (minibuf)), f)
ec33931795c4 (next_frame, prev_frame): If MINIBUF is a window,
Gerd Moellmann <gerd@gnu.org>
parents: 29987
diff changeset
884 || EQ (WINDOW_FRAME (XWINDOW (minibuf)),
ec33931795c4 (next_frame, prev_frame): If MINIBUF is a window,
Gerd Moellmann <gerd@gnu.org>
parents: 29987
diff changeset
885 FRAME_FOCUS_FRAME (XFRAME (f))))
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
886 return f;
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
887 }
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
888 else
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
889 return f;
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
890 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
892 if (EQ (frame, f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
893 passed++;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
896
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
897 /* Return the previous frame in the frame list before FRAME.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
898 If MINIBUF is nil, exclude minibuffer-only frames.
8168
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
899 If MINIBUF is a window, include only its own frame
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
900 and any frame now using that window as the minibuffer.
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
901 If MINIBUF is `visible', include all visible frames.
8168
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
902 If MINIBUF is 0, include all visible and iconified frames.
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
903 Otherwise, include all frames. */
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
904
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
905 Lisp_Object
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
906 prev_frame (frame, minibuf)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
907 Lisp_Object frame;
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
908 Lisp_Object minibuf;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
909 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910 Lisp_Object tail;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911 Lisp_Object prev;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
912
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
913 /* There must always be at least one frame in Vframe_list. */
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
914 if (! CONSP (Vframe_list))
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
915 abort ();
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
916
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
917 prev = Qnil;
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
918 for (tail = Vframe_list; CONSP (tail); tail = XCDR (tail))
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
919 {
6500
551bff5cffde (next_frame, prev_frame, other_visible_frames, Fdelete_frame): Use assignment,
Karl Heuer <kwzh@gnu.org>
parents: 6486
diff changeset
920 Lisp_Object f;
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
921
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
922 f = XCAR (tail);
9127
0b4836daa8e1 (Fframep, make_frame_without_minibuffer, do_switch_frame, prev_frame,
Karl Heuer <kwzh@gnu.org>
parents: 9032
diff changeset
923 if (!FRAMEP (f))
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
924 abort ();
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
925
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
926 if (EQ (frame, f) && !NILP (prev))
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
927 return prev;
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
928
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
929 if (FRAME_KBOARD (XFRAME (f)) == FRAME_KBOARD (XFRAME (frame)))
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
930 {
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
931 /* Decide whether this frame is eligible to be returned,
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
932 according to minibuf. */
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
933 if (NILP (minibuf))
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
934 {
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
935 if (! FRAME_MINIBUF_ONLY_P (XFRAME (f)))
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
936 prev = f;
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
937 }
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
938 else if (WINDOWP (minibuf))
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
939 {
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
940 if (EQ (FRAME_MINIBUF_WINDOW (XFRAME (f)), minibuf)
29995
ec33931795c4 (next_frame, prev_frame): If MINIBUF is a window,
Gerd Moellmann <gerd@gnu.org>
parents: 29987
diff changeset
941 || EQ (WINDOW_FRAME (XWINDOW (minibuf)), f)
ec33931795c4 (next_frame, prev_frame): If MINIBUF is a window,
Gerd Moellmann <gerd@gnu.org>
parents: 29987
diff changeset
942 || EQ (WINDOW_FRAME (XWINDOW (minibuf)),
ec33931795c4 (next_frame, prev_frame): If MINIBUF is a window,
Gerd Moellmann <gerd@gnu.org>
parents: 29987
diff changeset
943 FRAME_FOCUS_FRAME (XFRAME (f))))
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
944 prev = f;
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
945 }
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
946 else if (EQ (minibuf, Qvisible))
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
947 {
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
948 FRAME_SAMPLE_VISIBILITY (XFRAME (f));
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
949 if (FRAME_VISIBLE_P (XFRAME (f)))
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
950 prev = f;
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
951 }
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
952 else if (XFASTINT (minibuf) == 0)
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
953 {
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
954 FRAME_SAMPLE_VISIBILITY (XFRAME (f));
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
955 if (FRAME_VISIBLE_P (XFRAME (f))
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
956 || FRAME_ICONIFIED_P (XFRAME (f)))
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
957 prev = f;
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
958 }
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
959 else
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
960 prev = f;
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
961 }
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
962 }
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
963
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
964 /* We've scanned the entire list. */
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
965 if (NILP (prev))
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
966 /* We went through the whole frame list without finding a single
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
967 acceptable frame. Return the original frame. */
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
968 return frame;
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
969 else
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
970 /* There were no acceptable frames in the list before FRAME; otherwise,
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
971 we would have returned directly from the loop. Since PREV is the last
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
972 acceptable frame in the list, return it. */
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
973 return prev;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
974 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
975
4424
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
976
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
977 DEFUN ("next-frame", Fnext_frame, Snext_frame, 0, 2, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
978 "Return the next frame in the frame list after FRAME.\n\
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
979 It considers only frames on the same terminal as FRAME.\n\
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
980 By default, skip minibuffer-only frames.\n\
1118
a43d53261506 * frame.c (choose_minibuf_frame): abort if the selected frame has
Jim Blandy <jimb@redhat.com>
parents: 1006
diff changeset
981 If omitted, FRAME defaults to the selected frame.\n\
4227
b283670201b4 (Fdelete_frame): Allow deletion if there is some other
Richard M. Stallman <rms@gnu.org>
parents: 3970
diff changeset
982 If optional argument MINIFRAME is nil, exclude minibuffer-only frames.\n\
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
983 If MINIFRAME is a window, include only its own frame\n\
8168
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
984 and any frame now using that window as the minibuffer.\n\
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
985 If MINIFRAME is `visible', include all visible frames.\n\
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
986 If MINIFRAME is 0, include all visible and iconified frames.\n\
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
987 Otherwise, include all frames.")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
988 (frame, miniframe)
1251
4e556fda7a4d * frame.c (Fselect_frame, Fframe_root_window,
Jim Blandy <jimb@redhat.com>
parents: 1118
diff changeset
989 Lisp_Object frame, miniframe;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
990 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
991 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
992 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
993
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
994 CHECK_LIVE_FRAME (frame, 0);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
995 return next_frame (frame, miniframe);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996 }
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
997
4424
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
998 DEFUN ("previous-frame", Fprevious_frame, Sprevious_frame, 0, 2, 0,
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
999 "Return the previous frame in the frame list before FRAME.\n\
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1000 It considers only frames on the same terminal as FRAME.\n\
4424
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
1001 By default, skip minibuffer-only frames.\n\
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
1002 If omitted, FRAME defaults to the selected frame.\n\
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
1003 If optional argument MINIFRAME is nil, exclude minibuffer-only frames.\n\
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1004 If MINIFRAME is a window, include only its own frame\n\
8168
32fbb27091d4 (next_frame, prev_frame):
Richard M. Stallman <rms@gnu.org>
parents: 8099
diff changeset
1005 and any frame now using that window as the minibuffer.\n\
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
1006 If MINIFRAME is `visible', include all visible frames.\n\
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1007 If MINIFRAME is 0, include all visible and iconified frames.\n\
6246
128dc040e121 (next_frame, prev_frame): If MINIBUF is `visible',
Richard M. Stallman <rms@gnu.org>
parents: 6157
diff changeset
1008 Otherwise, include all frames.")
4424
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
1009 (frame, miniframe)
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
1010 Lisp_Object frame, miniframe;
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
1011 {
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
1012 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1013 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1014 CHECK_LIVE_FRAME (frame, 0);
4424
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
1015 return prev_frame (frame, miniframe);
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
1016 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1017
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1018 /* Return 1 if it is ok to delete frame F;
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1019 0 if all frames aside from F are invisible.
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1020 (Exception: if F is the terminal frame, and we are using X, return 1.) */
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1021
7646
de2c4334fad4 (other_visible_frames): No longer static.
Richard M. Stallman <rms@gnu.org>
parents: 7570
diff changeset
1022 int
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1023 other_visible_frames (f)
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1024 FRAME_PTR f;
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1025 {
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1026 /* We know the selected frame is visible,
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1027 so if F is some other frame, it can't be the sole visible one. */
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1028 if (f == SELECTED_FRAME ())
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1029 {
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1030 Lisp_Object frames;
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1031 int count = 0;
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1032
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1033 for (frames = Vframe_list;
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1034 CONSP (frames);
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1035 frames = XCDR (frames))
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1036 {
6500
551bff5cffde (next_frame, prev_frame, other_visible_frames, Fdelete_frame): Use assignment,
Karl Heuer <kwzh@gnu.org>
parents: 6486
diff changeset
1037 Lisp_Object this;
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1038
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1039 this = XCAR (frames);
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1040 /* Verify that the frame's window still exists
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1041 and we can still talk to it. And note any recent change
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1042 in visibility. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1043 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1044 if (FRAME_WINDOW_P (XFRAME (this)))
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1045 {
9648
14b1481b7c6d (other_visible_frames): Pass a frame ptr to x_sync.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
1046 x_sync (XFRAME (this));
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1047 FRAME_SAMPLE_VISIBILITY (XFRAME (this));
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1048 }
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1049 #endif
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1050
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1051 if (FRAME_VISIBLE_P (XFRAME (this))
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1052 || FRAME_ICONIFIED_P (XFRAME (this))
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1053 /* Allow deleting the terminal frame when at least
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1054 one X frame exists! */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1055 || (FRAME_WINDOW_P (XFRAME (this)) && !FRAME_WINDOW_P (f)))
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1056 count++;
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1057 }
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1058 return count > 1;
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1059 }
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1060 return 1;
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1061 }
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1062
4341
d07ef5ea3b58 (Fdelete_frame): New arg FORCE allows deletion of last non-invisible frame.
Richard M. Stallman <rms@gnu.org>
parents: 4227
diff changeset
1063 DEFUN ("delete-frame", Fdelete_frame, Sdelete_frame, 0, 2, "",
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1064 "Delete FRAME, permanently eliminating it from use.\n\
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1065 If omitted, FRAME defaults to the selected frame.\n\
4341
d07ef5ea3b58 (Fdelete_frame): New arg FORCE allows deletion of last non-invisible frame.
Richard M. Stallman <rms@gnu.org>
parents: 4227
diff changeset
1066 A frame may not be deleted if its minibuffer is used by other frames.\n\
d07ef5ea3b58 (Fdelete_frame): New arg FORCE allows deletion of last non-invisible frame.
Richard M. Stallman <rms@gnu.org>
parents: 4227
diff changeset
1067 Normally, you may not delete a frame if all other frames are invisible,\n\
32909
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1068 but if the second optional argument FORCE is non-nil, you may do so.\n\
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1069 \n\
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1070 This function runs `delete-frame-hook' before actually deleting the\n\
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1071 frame. The hook is called with one argument FRAME.")
4341
d07ef5ea3b58 (Fdelete_frame): New arg FORCE allows deletion of last non-invisible frame.
Richard M. Stallman <rms@gnu.org>
parents: 4227
diff changeset
1072 (frame, force)
d07ef5ea3b58 (Fdelete_frame): New arg FORCE allows deletion of last non-invisible frame.
Richard M. Stallman <rms@gnu.org>
parents: 4227
diff changeset
1073 Lisp_Object frame, force;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1074 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1075 struct frame *f;
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1076 struct frame *sf = SELECTED_FRAME ();
12222
7286ed64badd (Fdelete_frame): If the minibuf window was selected, make that remain so.
Richard M. Stallman <rms@gnu.org>
parents: 12010
diff changeset
1077 int minibuffer_selected;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1078
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1079 if (EQ (frame, Qnil))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1080 {
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1081 f = sf;
9268
cb55d0155265 (make_minibuffer_frame, make_terminal_frame, Fselected_frame,
Karl Heuer <kwzh@gnu.org>
parents: 9214
diff changeset
1082 XSETFRAME (frame, f);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1083 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1084 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1085 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1086 CHECK_FRAME (frame, 0);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1087 f = XFRAME (frame);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1088 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1089
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1090 if (! FRAME_LIVE_P (f))
1920
ac5e559a819a * frame.c (Fselect_frame): Set Vlast_event_frame to Qnil after
Jim Blandy <jimb@redhat.com>
parents: 1870
diff changeset
1091 return Qnil;
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
1092
35660
b9366f467430 * alloc.c (allocate_string) [macintosh]: Call check_string_bytes
Andrew Choi <akochoi@shaw.ca>
parents: 35611
diff changeset
1093 if (NILP (force) && !other_visible_frames (f)
b9366f467430 * alloc.c (allocate_string) [macintosh]: Call check_string_bytes
Andrew Choi <akochoi@shaw.ca>
parents: 35611
diff changeset
1094 #ifdef macintosh
b9366f467430 * alloc.c (allocate_string) [macintosh]: Call check_string_bytes
Andrew Choi <akochoi@shaw.ca>
parents: 35611
diff changeset
1095 /* Terminal frame deleted before any other visible frames are
b9366f467430 * alloc.c (allocate_string) [macintosh]: Call check_string_bytes
Andrew Choi <akochoi@shaw.ca>
parents: 35611
diff changeset
1096 created. */
b9366f467430 * alloc.c (allocate_string) [macintosh]: Call check_string_bytes
Andrew Choi <akochoi@shaw.ca>
parents: 35611
diff changeset
1097 && strcmp (XSTRING (f->name)->data, "F1") != 0
b9366f467430 * alloc.c (allocate_string) [macintosh]: Call check_string_bytes
Andrew Choi <akochoi@shaw.ca>
parents: 35611
diff changeset
1098 #endif
b9366f467430 * alloc.c (allocate_string) [macintosh]: Call check_string_bytes
Andrew Choi <akochoi@shaw.ca>
parents: 35611
diff changeset
1099 )
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1100 error ("Attempt to delete the sole visible or iconified frame");
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1101
18945
7f491075707a (Fdelete_frame): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18698
diff changeset
1102 #if 0
7f491075707a (Fdelete_frame): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18698
diff changeset
1103 /* This is a nice idea, but x_connection_closed needs to be able
7f491075707a (Fdelete_frame): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18698
diff changeset
1104 to delete the last frame, if it is gone. */
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1105 if (NILP (XCDR (Vframe_list)))
18698
52271ad26a1d (Fdelete_frame): Always err for deleting the only frame.
Richard M. Stallman <rms@gnu.org>
parents: 18380
diff changeset
1106 error ("Attempt to delete the only frame");
18945
7f491075707a (Fdelete_frame): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18698
diff changeset
1107 #endif
18698
52271ad26a1d (Fdelete_frame): Always err for deleting the only frame.
Richard M. Stallman <rms@gnu.org>
parents: 18380
diff changeset
1108
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1109 /* Does this frame have a minibuffer, and is it the surrogate
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1110 minibuffer for any other frame? */
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
1111 if (FRAME_HAS_MINIBUF_P (XFRAME (frame)))
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1112 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1113 Lisp_Object frames;
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1114
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1115 for (frames = Vframe_list;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1116 CONSP (frames);
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1117 frames = XCDR (frames))
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1118 {
6157
9422e430f067 (Fdelete_frame): Don't initialize a Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents: 6130
diff changeset
1119 Lisp_Object this;
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1120 this = XCAR (frames);
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1121
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1122 if (! EQ (this, frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1123 && EQ (frame,
6157
9422e430f067 (Fdelete_frame): Don't initialize a Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents: 6130
diff changeset
1124 WINDOW_FRAME (XWINDOW
9422e430f067 (Fdelete_frame): Don't initialize a Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents: 6130
diff changeset
1125 (FRAME_MINIBUF_WINDOW (XFRAME (this))))))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1126 error ("Attempt to delete a surrogate minibuffer frame");
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1127 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1128 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1129
32909
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1130 /* Run `delete-frame-hook'. */
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1131 if (!NILP (Vrun_hooks))
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1132 {
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1133 Lisp_Object args[2];
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1134 args[0] = intern ("delete-frame-hook");
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1135 args[1] = frame;
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1136 Frun_hook_with_args (2, args);
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1137 }
44cb0900a858 (Fdelete_frame): Doc fix. Move running the hook
Gerd Moellmann <gerd@gnu.org>
parents: 32907
diff changeset
1138
12222
7286ed64badd (Fdelete_frame): If the minibuf window was selected, make that remain so.
Richard M. Stallman <rms@gnu.org>
parents: 12010
diff changeset
1139 minibuffer_selected = EQ (minibuf_window, selected_window);
7286ed64badd (Fdelete_frame): If the minibuf window was selected, make that remain so.
Richard M. Stallman <rms@gnu.org>
parents: 12010
diff changeset
1140
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1141 /* Don't let the frame remain selected. */
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1142 if (f == sf)
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1143 {
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1144 Lisp_Object tail, frame1;
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1145
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1146 /* Look for another visible frame on the same terminal. */
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1147 frame1 = next_frame (frame, Qvisible);
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1148
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1149 /* If there is none, find *some* other frame. */
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1150 if (NILP (frame1) || EQ (frame1, frame))
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1151 {
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1152 FOR_EACH_FRAME (tail, frame1)
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1153 {
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1154 if (! EQ (frame, frame1))
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1155 break;
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1156 }
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1157 }
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1158
36810
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
1159 do_switch_frame (frame1, 0, 1);
25736
84179b4e7743 (Fdelete_frame): Correct local variable pointing to
Gerd Moellmann <gerd@gnu.org>
parents: 25710
diff changeset
1160 sf = SELECTED_FRAME ();
12379
7149fc03ea56 (next_frame, prev_frame): Consider only frames on same kbd.
Richard M. Stallman <rms@gnu.org>
parents: 12286
diff changeset
1161 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1162
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1163 /* Don't allow minibuf_window to remain on a deleted frame. */
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1164 if (EQ (f->minibuffer_window, minibuf_window))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1165 {
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1166 Fset_window_buffer (sf->minibuffer_window,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1167 XWINDOW (minibuf_window)->buffer);
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1168 minibuf_window = sf->minibuffer_window;
12222
7286ed64badd (Fdelete_frame): If the minibuf window was selected, make that remain so.
Richard M. Stallman <rms@gnu.org>
parents: 12010
diff changeset
1169
7286ed64badd (Fdelete_frame): If the minibuf window was selected, make that remain so.
Richard M. Stallman <rms@gnu.org>
parents: 12010
diff changeset
1170 /* If the dying minibuffer window was selected,
7286ed64badd (Fdelete_frame): If the minibuf window was selected, make that remain so.
Richard M. Stallman <rms@gnu.org>
parents: 12010
diff changeset
1171 select the new one. */
7286ed64badd (Fdelete_frame): If the minibuf window was selected, make that remain so.
Richard M. Stallman <rms@gnu.org>
parents: 12010
diff changeset
1172 if (minibuffer_selected)
7286ed64badd (Fdelete_frame): If the minibuf window was selected, make that remain so.
Richard M. Stallman <rms@gnu.org>
parents: 12010
diff changeset
1173 Fselect_window (minibuf_window);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1174 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1175
27800
403b2b833ce2 (Fdelete_frame): Don't let echo_area_window to remain on a deleted frame.
Eli Zaretskii <eliz@gnu.org>
parents: 27797
diff changeset
1176 /* Don't let echo_area_window to remain on a deleted frame. */
403b2b833ce2 (Fdelete_frame): Don't let echo_area_window to remain on a deleted frame.
Eli Zaretskii <eliz@gnu.org>
parents: 27797
diff changeset
1177 if (EQ (f->minibuffer_window, echo_area_window))
403b2b833ce2 (Fdelete_frame): Don't let echo_area_window to remain on a deleted frame.
Eli Zaretskii <eliz@gnu.org>
parents: 27797
diff changeset
1178 echo_area_window = sf->minibuffer_window;
403b2b833ce2 (Fdelete_frame): Don't let echo_area_window to remain on a deleted frame.
Eli Zaretskii <eliz@gnu.org>
parents: 27797
diff changeset
1179
8099
a06382fd175d (Fdelete_frame): Call x_clear_frame_selections.
Richard M. Stallman <rms@gnu.org>
parents: 8054
diff changeset
1180 /* Clear any X selections for this frame. */
a06382fd175d (Fdelete_frame): Call x_clear_frame_selections.
Richard M. Stallman <rms@gnu.org>
parents: 8054
diff changeset
1181 #ifdef HAVE_X_WINDOWS
a06382fd175d (Fdelete_frame): Call x_clear_frame_selections.
Richard M. Stallman <rms@gnu.org>
parents: 8054
diff changeset
1182 if (FRAME_X_P (f))
a06382fd175d (Fdelete_frame): Call x_clear_frame_selections.
Richard M. Stallman <rms@gnu.org>
parents: 8054
diff changeset
1183 x_clear_frame_selections (f);
a06382fd175d (Fdelete_frame): Call x_clear_frame_selections.
Richard M. Stallman <rms@gnu.org>
parents: 8054
diff changeset
1184 #endif
a06382fd175d (Fdelete_frame): Call x_clear_frame_selections.
Richard M. Stallman <rms@gnu.org>
parents: 8054
diff changeset
1185
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1186 /* Free glyphs.
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1187 This function must be called before the window tree of the
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1188 frame is deleted because windows contain dynamically allocated
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1189 memory. */
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1190 free_glyphs (f);
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1191
1680
ea9f3949f153 * frame.c (Fdelete_frame): Delete all the windows in the frame's
Jim Blandy <jimb@redhat.com>
parents: 1652
diff changeset
1192 /* Mark all the windows that used to be on FRAME as deleted, and then
ea9f3949f153 * frame.c (Fdelete_frame): Delete all the windows in the frame's
Jim Blandy <jimb@redhat.com>
parents: 1652
diff changeset
1193 remove the reference to them. */
ea9f3949f153 * frame.c (Fdelete_frame): Delete all the windows in the frame's
Jim Blandy <jimb@redhat.com>
parents: 1652
diff changeset
1194 delete_all_subwindows (XWINDOW (f->root_window));
ea9f3949f153 * frame.c (Fdelete_frame): Delete all the windows in the frame's
Jim Blandy <jimb@redhat.com>
parents: 1652
diff changeset
1195 f->root_window = Qnil;
ea9f3949f153 * frame.c (Fdelete_frame): Delete all the windows in the frame's
Jim Blandy <jimb@redhat.com>
parents: 1652
diff changeset
1196
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1197 Vframe_list = Fdelq (frame, Vframe_list);
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1198 FRAME_SET_VISIBLE (f, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1199
11495
da1a40d86231 (Fdelete_frame): Free f->namebuf.
Karl Heuer <kwzh@gnu.org>
parents: 11494
diff changeset
1200 if (f->namebuf)
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1201 xfree (f->namebuf);
8666
844edbc22875 (Fdelete_frame): Free the frame's glyphs arrays.
Richard M. Stallman <rms@gnu.org>
parents: 8586
diff changeset
1202 if (FRAME_INSERT_COST (f))
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1203 xfree (FRAME_INSERT_COST (f));
8666
844edbc22875 (Fdelete_frame): Free the frame's glyphs arrays.
Richard M. Stallman <rms@gnu.org>
parents: 8586
diff changeset
1204 if (FRAME_DELETEN_COST (f))
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1205 xfree (FRAME_DELETEN_COST (f));
8666
844edbc22875 (Fdelete_frame): Free the frame's glyphs arrays.
Richard M. Stallman <rms@gnu.org>
parents: 8586
diff changeset
1206 if (FRAME_INSERTN_COST (f))
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1207 xfree (FRAME_INSERTN_COST (f));
8666
844edbc22875 (Fdelete_frame): Free the frame's glyphs arrays.
Richard M. Stallman <rms@gnu.org>
parents: 8586
diff changeset
1208 if (FRAME_DELETE_COST (f))
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1209 xfree (FRAME_DELETE_COST (f));
17573
bfd86808adcc (Fdelete_frame): Free FRAME_MESSAGE_BUF.
Richard M. Stallman <rms@gnu.org>
parents: 17235
diff changeset
1210 if (FRAME_MESSAGE_BUF (f))
25030
c69d9e48269b (make_frame): Set n_current_toolbar_items to 0.
Gerd Moellmann <gerd@gnu.org>
parents: 23746
diff changeset
1211 xfree (FRAME_MESSAGE_BUF (f));
8666
844edbc22875 (Fdelete_frame): Free the frame's glyphs arrays.
Richard M. Stallman <rms@gnu.org>
parents: 8586
diff changeset
1212
1809
69b3ee873a9b * frame.c (Fdelete_frame): Clear the frame's display after calling
Jim Blandy <jimb@redhat.com>
parents: 1784
diff changeset
1213 /* Since some events are handled at the interrupt level, we may get
69b3ee873a9b * frame.c (Fdelete_frame): Clear the frame's display after calling
Jim Blandy <jimb@redhat.com>
parents: 1784
diff changeset
1214 an event for f at any time; if we zero out the frame's display
69b3ee873a9b * frame.c (Fdelete_frame): Clear the frame's display after calling
Jim Blandy <jimb@redhat.com>
parents: 1784
diff changeset
1215 now, then we may trip up the event-handling code. Instead, we'll
69b3ee873a9b * frame.c (Fdelete_frame): Clear the frame's display after calling
Jim Blandy <jimb@redhat.com>
parents: 1784
diff changeset
1216 promise that the display of the frame must be valid until we have
69b3ee873a9b * frame.c (Fdelete_frame): Clear the frame's display after calling
Jim Blandy <jimb@redhat.com>
parents: 1784
diff changeset
1217 called the window-system-dependent frame destruction routine. */
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1218
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1219 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1220 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1221 if (FRAME_WINDOW_P (f))
1809
69b3ee873a9b * frame.c (Fdelete_frame): Clear the frame's display after calling
Jim Blandy <jimb@redhat.com>
parents: 1784
diff changeset
1222 x_destroy_window (f);
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1223 #endif
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1224
12667
a3466dad7d6d Renamings: frame->display => frame->output, struct x_display -> sruct x_output.
Richard M. Stallman <rms@gnu.org>
parents: 12630
diff changeset
1225 f->output_data.nothing = 0;
1809
69b3ee873a9b * frame.c (Fdelete_frame): Clear the frame's display after calling
Jim Blandy <jimb@redhat.com>
parents: 1784
diff changeset
1226
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1227 /* If we've deleted the last_nonminibuf_frame, then try to find
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1228 another one. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1229 if (f == last_nonminibuf_frame)
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1230 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1231 Lisp_Object frames;
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1232
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1233 last_nonminibuf_frame = 0;
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1234
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1235 for (frames = Vframe_list;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1236 CONSP (frames);
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1237 frames = XCDR (frames))
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1238 {
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1239 f = XFRAME (XCAR (frames));
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1240 if (!FRAME_MINIBUF_ONLY_P (f))
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1241 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1242 last_nonminibuf_frame = f;
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1243 break;
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1244 }
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1245 }
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1246 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1247
11906
3ca56969ba07 (Fdelete_frame): When updating Vdefault_minibuffer_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11794
diff changeset
1248 /* If we've deleted this keyboard's default_minibuffer_frame, try to
3ca56969ba07 (Fdelete_frame): When updating Vdefault_minibuffer_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11794
diff changeset
1249 find another one. Prefer minibuffer-only frames, but also notice
3ca56969ba07 (Fdelete_frame): When updating Vdefault_minibuffer_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11794
diff changeset
1250 frames with other windows. */
11779
6234b3610a6f Vdefault_minibuffer_frame is now part of KBOARD instead
Karl Heuer <kwzh@gnu.org>
parents: 11775
diff changeset
1251 if (EQ (frame, FRAME_KBOARD (f)->Vdefault_minibuffer_frame))
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1252 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1253 Lisp_Object frames;
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1254
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1255 /* The last frame we saw with a minibuffer, minibuffer-only or not. */
6500
551bff5cffde (next_frame, prev_frame, other_visible_frames, Fdelete_frame): Use assignment,
Karl Heuer <kwzh@gnu.org>
parents: 6486
diff changeset
1256 Lisp_Object frame_with_minibuf;
12380
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1257 /* Some frame we found on the same kboard, or nil if there are none. */
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1258 Lisp_Object frame_on_same_kboard;
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1259
12380
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1260 frame_on_same_kboard = Qnil;
6500
551bff5cffde (next_frame, prev_frame, other_visible_frames, Fdelete_frame): Use assignment,
Karl Heuer <kwzh@gnu.org>
parents: 6486
diff changeset
1261 frame_with_minibuf = Qnil;
12380
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1262
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1263 for (frames = Vframe_list;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1264 CONSP (frames);
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1265 frames = XCDR (frames))
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1266 {
6500
551bff5cffde (next_frame, prev_frame, other_visible_frames, Fdelete_frame): Use assignment,
Karl Heuer <kwzh@gnu.org>
parents: 6486
diff changeset
1267 Lisp_Object this;
11906
3ca56969ba07 (Fdelete_frame): When updating Vdefault_minibuffer_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11794
diff changeset
1268 struct frame *f1;
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1269
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1270 this = XCAR (frames);
9127
0b4836daa8e1 (Fframep, make_frame_without_minibuffer, do_switch_frame, prev_frame,
Karl Heuer <kwzh@gnu.org>
parents: 9032
diff changeset
1271 if (!FRAMEP (this))
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1272 abort ();
11906
3ca56969ba07 (Fdelete_frame): When updating Vdefault_minibuffer_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11794
diff changeset
1273 f1 = XFRAME (this);
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1274
11906
3ca56969ba07 (Fdelete_frame): When updating Vdefault_minibuffer_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11794
diff changeset
1275 /* Consider only frames on the same kboard
3ca56969ba07 (Fdelete_frame): When updating Vdefault_minibuffer_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11794
diff changeset
1276 and only those with minibuffers. */
3ca56969ba07 (Fdelete_frame): When updating Vdefault_minibuffer_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11794
diff changeset
1277 if (FRAME_KBOARD (f) == FRAME_KBOARD (f1)
3ca56969ba07 (Fdelete_frame): When updating Vdefault_minibuffer_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11794
diff changeset
1278 && FRAME_HAS_MINIBUF_P (f1))
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1279 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1280 frame_with_minibuf = this;
11906
3ca56969ba07 (Fdelete_frame): When updating Vdefault_minibuffer_frame,
Karl Heuer <kwzh@gnu.org>
parents: 11794
diff changeset
1281 if (FRAME_MINIBUF_ONLY_P (f1))
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1282 break;
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1283 }
12380
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1284
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1285 if (FRAME_KBOARD (f) == FRAME_KBOARD (f1))
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1286 frame_on_same_kboard = this;
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1287 }
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1288
12380
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1289 if (!NILP (frame_on_same_kboard))
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1290 {
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1291 /* We know that there must be some frame with a minibuffer out
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1292 there. If this were not true, all of the frames present
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1293 would have to be minibufferless, which implies that at some
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1294 point their minibuffer frames must have been deleted, but
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1295 that is prohibited at the top; you can't delete surrogate
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1296 minibuffer frames. */
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1297 if (NILP (frame_with_minibuf))
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1298 abort ();
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1299
12380
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1300 FRAME_KBOARD (f)->Vdefault_minibuffer_frame = frame_with_minibuf;
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1301 }
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1302 else
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1303 /* No frames left on this kboard--say no minibuffer either. */
2c09b3adbb90 (Fdelete_frame): It's ok to have no minibuffer left on
Richard M. Stallman <rms@gnu.org>
parents: 12379
diff changeset
1304 FRAME_KBOARD (f)->Vdefault_minibuffer_frame = Qnil;
708
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1305 }
030fb4635335 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 699
diff changeset
1306
16280
f4833d0bfaaa (Fdelete_frame): Set update_mode_lines.
Richard M. Stallman <rms@gnu.org>
parents: 16263
diff changeset
1307 /* Cause frame titles to update--necessary if we now have just one frame. */
f4833d0bfaaa (Fdelete_frame): Set update_mode_lines.
Richard M. Stallman <rms@gnu.org>
parents: 16263
diff changeset
1308 update_mode_lines = 1;
f4833d0bfaaa (Fdelete_frame): Set update_mode_lines.
Richard M. Stallman <rms@gnu.org>
parents: 16263
diff changeset
1309
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1310 return Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1311 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1312
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1313 /* Return mouse position in character cell units. */
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1314
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
1315 DEFUN ("mouse-position", Fmouse_position, Smouse_position, 0, 0, 0,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1316 "Return a list (FRAME X . Y) giving the current mouse frame and position.\n\
3693
8e83f20d0e39 * frame.c (Fmouse_position): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 3676
diff changeset
1317 The position is given in character cells, where (0, 0) is the\n\
8e83f20d0e39 * frame.c (Fmouse_position): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 3676
diff changeset
1318 upper-left corner.\n\
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
1319 If Emacs is running on a mouseless terminal or hasn't been programmed\n\
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1320 to read the mouse position, it returns the selected frame for FRAME\n\
27795
83292274bbd4 (Vmouse_position_function): New variable.
Dave Love <fx@gnu.org>
parents: 27725
diff changeset
1321 and nil for X and Y.\n\
39219
bf440ac76861 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 36984
diff changeset
1322 If `mouse-position-function' is non-nil, `mouse-position' calls it,\n\
bf440ac76861 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 36984
diff changeset
1323 passing the normal return value to that function as an argument,\n\
bf440ac76861 Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 36984
diff changeset
1324 and returns whatever that function returns.")
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
1325 ()
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1327 FRAME_PTR f;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1328 Lisp_Object lispy_dummy;
1989
b1c1ab20f810 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1920
diff changeset
1329 enum scroll_bar_part party_dummy;
27795
83292274bbd4 (Vmouse_position_function): New variable.
Dave Love <fx@gnu.org>
parents: 27725
diff changeset
1330 Lisp_Object x, y, retval;
6054
24ffc4bc4067 (Fmouse_position): Convert to glyph units.
Richard M. Stallman <rms@gnu.org>
parents: 6012
diff changeset
1331 int col, row;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1332 unsigned long long_dummy;
27797
da774b48eb7f (Fmouse_position): GCPRO retval instead of x and y.
Gerd Moellmann <gerd@gnu.org>
parents: 27795
diff changeset
1333 struct gcpro gcpro1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1334
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1335 f = SELECTED_FRAME ();
3658
c2831d419bec (Fmouse_position): Set up defaults before calling the hook.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1336 x = y = Qnil;
c2831d419bec (Fmouse_position): Set up defaults before calling the hook.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1337
11025
6c5aef697fbe (Fmouse_position): Do work only if HAVE_MOUSE.
Karl Heuer <kwzh@gnu.org>
parents: 11017
diff changeset
1338 #ifdef HAVE_MOUSE
3658
c2831d419bec (Fmouse_position): Set up defaults before calling the hook.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
1339 /* It's okay for the hook to refrain from storing anything. */
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
1340 if (mouse_position_hook)
20178
fb9facb8fda0 (Fmouse_pixel_position, Fmouse_position):
Karl Heuer <kwzh@gnu.org>
parents: 20038
diff changeset
1341 (*mouse_position_hook) (&f, -1,
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1342 &lispy_dummy, &party_dummy,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1343 &x, &y,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1344 &long_dummy);
6854
c976ac5d85ec (Fmouse_position) [MULTI_FRAME]: Use pixel_to_glyph, not glyph_to_pixel. Skip
Karl Heuer <kwzh@gnu.org>
parents: 6806
diff changeset
1345 if (! NILP (x))
c976ac5d85ec (Fmouse_position) [MULTI_FRAME]: Use pixel_to_glyph, not glyph_to_pixel. Skip
Karl Heuer <kwzh@gnu.org>
parents: 6806
diff changeset
1346 {
c976ac5d85ec (Fmouse_position) [MULTI_FRAME]: Use pixel_to_glyph, not glyph_to_pixel. Skip
Karl Heuer <kwzh@gnu.org>
parents: 6806
diff changeset
1347 col = XINT (x);
c976ac5d85ec (Fmouse_position) [MULTI_FRAME]: Use pixel_to_glyph, not glyph_to_pixel. Skip
Karl Heuer <kwzh@gnu.org>
parents: 6806
diff changeset
1348 row = XINT (y);
12006
3e9db7cb1d05 (Fmouse_position): Use NULL, not 0, as arg of pixel_to_glyph_coords.
Karl Heuer <kwzh@gnu.org>
parents: 12005
diff changeset
1349 pixel_to_glyph_coords (f, col, row, &col, &row, NULL, 1);
6854
c976ac5d85ec (Fmouse_position) [MULTI_FRAME]: Use pixel_to_glyph, not glyph_to_pixel. Skip
Karl Heuer <kwzh@gnu.org>
parents: 6806
diff changeset
1350 XSETINT (x, col);
c976ac5d85ec (Fmouse_position) [MULTI_FRAME]: Use pixel_to_glyph, not glyph_to_pixel. Skip
Karl Heuer <kwzh@gnu.org>
parents: 6806
diff changeset
1351 XSETINT (y, row);
c976ac5d85ec (Fmouse_position) [MULTI_FRAME]: Use pixel_to_glyph, not glyph_to_pixel. Skip
Karl Heuer <kwzh@gnu.org>
parents: 6806
diff changeset
1352 }
11025
6c5aef697fbe (Fmouse_position): Do work only if HAVE_MOUSE.
Karl Heuer <kwzh@gnu.org>
parents: 11017
diff changeset
1353 #endif
9268
cb55d0155265 (make_minibuffer_frame, make_terminal_frame, Fselected_frame,
Karl Heuer <kwzh@gnu.org>
parents: 9214
diff changeset
1354 XSETFRAME (lispy_dummy, f);
27795
83292274bbd4 (Vmouse_position_function): New variable.
Dave Love <fx@gnu.org>
parents: 27725
diff changeset
1355 retval = Fcons (lispy_dummy, Fcons (x, y));
27797
da774b48eb7f (Fmouse_position): GCPRO retval instead of x and y.
Gerd Moellmann <gerd@gnu.org>
parents: 27795
diff changeset
1356 GCPRO1 (retval);
27795
83292274bbd4 (Vmouse_position_function): New variable.
Dave Love <fx@gnu.org>
parents: 27725
diff changeset
1357 if (!NILP (Vmouse_position_function))
27797
da774b48eb7f (Fmouse_position): GCPRO retval instead of x and y.
Gerd Moellmann <gerd@gnu.org>
parents: 27795
diff changeset
1358 retval = call1 (Vmouse_position_function, retval);
da774b48eb7f (Fmouse_position): GCPRO retval instead of x and y.
Gerd Moellmann <gerd@gnu.org>
parents: 27795
diff changeset
1359 RETURN_UNGCPRO (retval);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1360 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1361
7025
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1362 DEFUN ("mouse-pixel-position", Fmouse_pixel_position,
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1363 Smouse_pixel_position, 0, 0, 0,
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1364 "Return a list (FRAME X . Y) giving the current mouse frame and position.\n\
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1365 The position is given in pixel units, where (0, 0) is the\n\
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1366 upper-left corner.\n\
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1367 If Emacs is running on a mouseless terminal or hasn't been programmed\n\
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1368 to read the mouse position, it returns the selected frame for FRAME\n\
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1369 and nil for X and Y.")
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1370 ()
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1371 {
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1372 FRAME_PTR f;
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1373 Lisp_Object lispy_dummy;
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1374 enum scroll_bar_part party_dummy;
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1375 Lisp_Object x, y;
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1376 unsigned long long_dummy;
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1377
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1378 f = SELECTED_FRAME ();
7025
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1379 x = y = Qnil;
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1380
11126
786f1c82a38e (Fmouse_position--both definitions): Pass 0 for `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11025
diff changeset
1381 #ifdef HAVE_MOUSE
7025
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1382 /* It's okay for the hook to refrain from storing anything. */
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1383 if (mouse_position_hook)
20178
fb9facb8fda0 (Fmouse_pixel_position, Fmouse_position):
Karl Heuer <kwzh@gnu.org>
parents: 20038
diff changeset
1384 (*mouse_position_hook) (&f, -1,
7025
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1385 &lispy_dummy, &party_dummy,
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1386 &x, &y,
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1387 &long_dummy);
11126
786f1c82a38e (Fmouse_position--both definitions): Pass 0 for `insist'.
Richard M. Stallman <rms@gnu.org>
parents: 11025
diff changeset
1388 #endif
9268
cb55d0155265 (make_minibuffer_frame, make_terminal_frame, Fselected_frame,
Karl Heuer <kwzh@gnu.org>
parents: 9214
diff changeset
1389 XSETFRAME (lispy_dummy, f);
7025
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1390 return Fcons (lispy_dummy, Fcons (x, y));
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1391 }
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1392
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1393 DEFUN ("set-mouse-position", Fset_mouse_position, Sset_mouse_position, 3, 3, 0,
3694
f0e305fceb86 Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 3693
diff changeset
1394 "Move the mouse pointer to the center of character cell (X,Y) in FRAME.\n\
23746
06f68bc4b777 (Fset_mouse_position): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 23633
diff changeset
1395 Coordinates are relative to the frame, not a window,\n\
06f68bc4b777 (Fset_mouse_position): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 23633
diff changeset
1396 so the coordinates of the top left character in the frame\n\
06f68bc4b777 (Fset_mouse_position): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 23633
diff changeset
1397 may be nonzero due to left-hand scroll bars or the menu bar.\n\
06f68bc4b777 (Fset_mouse_position): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 23633
diff changeset
1398 \n\
06f68bc4b777 (Fset_mouse_position): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 23633
diff changeset
1399 This function is a no-op for an X frame that is not visible.\n\
12774
9b17b06bc9cd (Fset_mouse_position, Fset_mouse_pixel_position): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12761
diff changeset
1400 If you have just created a frame, you must wait for it to become visible\n\
9b17b06bc9cd (Fset_mouse_position, Fset_mouse_pixel_position): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12761
diff changeset
1401 before calling this function on it, like this.\n\
9b17b06bc9cd (Fset_mouse_position, Fset_mouse_pixel_position): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12761
diff changeset
1402 (while (not (frame-visible-p frame)) (sleep-for .5))")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1403 (frame, x, y)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1404 Lisp_Object frame, x, y;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1405 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1406 CHECK_LIVE_FRAME (frame, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1407 CHECK_NUMBER (x, 2);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1408 CHECK_NUMBER (y, 1);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1409
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1410 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1411 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1412 if (FRAME_WINDOW_P (XFRAME (frame)))
39918
fa0407ac162f (Fset_mouse_position): Improve style of comment to follow other comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
1413 /* Warping the mouse will cause enternotify and focus events. */
21524
e4ab93e19658 (Fset_mouse_position, Fset_mouse_pixel_position): Fix
Andreas Schwab <schwab@suse.de>
parents: 21514
diff changeset
1414 x_set_mouse_position (XFRAME (frame), XINT (x), XINT (y));
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1415 #else
15396
fbecc317220d Whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 15392
diff changeset
1416 #if defined (MSDOS) && defined (HAVE_MOUSE)
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1417 if (FRAME_MSDOS_P (XFRAME (frame)))
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1418 {
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1419 Fselect_frame (frame, Qnil);
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1420 mouse_moveto (XINT (x), XINT (y));
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1421 }
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1422 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1423 #endif
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1424
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1425 return Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1426 }
7025
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1427
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1428 DEFUN ("set-mouse-pixel-position", Fset_mouse_pixel_position,
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1429 Sset_mouse_pixel_position, 3, 3, 0,
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1430 "Move the mouse pointer to pixel position (X,Y) in FRAME.\n\
12774
9b17b06bc9cd (Fset_mouse_position, Fset_mouse_pixel_position): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12761
diff changeset
1431 Note, this is a no-op for an X frame that is not visible.\n\
9b17b06bc9cd (Fset_mouse_position, Fset_mouse_pixel_position): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12761
diff changeset
1432 If you have just created a frame, you must wait for it to become visible\n\
9b17b06bc9cd (Fset_mouse_position, Fset_mouse_pixel_position): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12761
diff changeset
1433 before calling this function on it, like this.\n\
9b17b06bc9cd (Fset_mouse_position, Fset_mouse_pixel_position): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 12761
diff changeset
1434 (while (not (frame-visible-p frame)) (sleep-for .5))")
7025
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1435 (frame, x, y)
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1436 Lisp_Object frame, x, y;
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1437 {
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1438 CHECK_LIVE_FRAME (frame, 0);
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1439 CHECK_NUMBER (x, 2);
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1440 CHECK_NUMBER (y, 1);
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1441
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1442 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1443 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1444 if (FRAME_WINDOW_P (XFRAME (frame)))
39918
fa0407ac162f (Fset_mouse_position): Improve style of comment to follow other comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
1445 /* Warping the mouse will cause enternotify and focus events. */
21524
e4ab93e19658 (Fset_mouse_position, Fset_mouse_pixel_position): Fix
Andreas Schwab <schwab@suse.de>
parents: 21514
diff changeset
1446 x_set_mouse_pixel_position (XFRAME (frame), XINT (x), XINT (y));
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1447 #else
15396
fbecc317220d Whitespace changes.
Richard M. Stallman <rms@gnu.org>
parents: 15392
diff changeset
1448 #if defined (MSDOS) && defined (HAVE_MOUSE)
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1449 if (FRAME_MSDOS_P (XFRAME (frame)))
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1450 {
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1451 Fselect_frame (frame, Qnil);
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1452 mouse_moveto (XINT (x), XINT (y));
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1453 }
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1454 #endif
7025
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1455 #endif
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1456
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1457 return Qnil;
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
1458 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1459
22188
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1460 static void make_frame_visible_1 P_ ((Lisp_Object));
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1461
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1462 DEFUN ("make-frame-visible", Fmake_frame_visible, Smake_frame_visible,
3834
1b2144b795aa * frame.c (Fmake_frame_visible): Make this interactively callable;
Jim Blandy <jimb@redhat.com>
parents: 3763
diff changeset
1463 0, 1, "",
39918
fa0407ac162f (Fset_mouse_position): Improve style of comment to follow other comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
1464 "Make the frame FRAME visible (assuming it is an X window).\n\
1251
4e556fda7a4d * frame.c (Fselect_frame, Fframe_root_window,
Jim Blandy <jimb@redhat.com>
parents: 1118
diff changeset
1465 If omitted, FRAME defaults to the currently selected frame.")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1466 (frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1467 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1468 {
872
336ffe2bd537 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 785
diff changeset
1469 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1470 frame = selected_frame;
872
336ffe2bd537 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 785
diff changeset
1471
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1472 CHECK_LIVE_FRAME (frame, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1473
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1474 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1475 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1476 if (FRAME_WINDOW_P (XFRAME (frame)))
5105
9b41ddf1b5f7 (Fmake_frame_visible): Use FRAME_SAMPLE_VISIBILITY. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 4961
diff changeset
1477 {
9b41ddf1b5f7 (Fmake_frame_visible): Use FRAME_SAMPLE_VISIBILITY. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 4961
diff changeset
1478 FRAME_SAMPLE_VISIBILITY (XFRAME (frame));
9b41ddf1b5f7 (Fmake_frame_visible): Use FRAME_SAMPLE_VISIBILITY. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 4961
diff changeset
1479 x_make_frame_visible (XFRAME (frame));
9b41ddf1b5f7 (Fmake_frame_visible): Use FRAME_SAMPLE_VISIBILITY. Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 4961
diff changeset
1480 }
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
1481 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1482
22188
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1483 make_frame_visible_1 (XFRAME (frame)->root_window);
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1484
39918
fa0407ac162f (Fset_mouse_position): Improve style of comment to follow other comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
1485 /* Make menu bar update for the Buffers and Frames menus. */
7900
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7646
diff changeset
1486 windows_or_buffers_changed++;
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7646
diff changeset
1487
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1488 return frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1489 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1490
22188
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1491 /* Update the display_time slot of the buffers shown in WINDOW
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1492 and all its descendents. */
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1493
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1494 static void
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1495 make_frame_visible_1 (window)
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1496 Lisp_Object window;
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1497 {
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1498 struct window *w;
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1499
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1500 for (;!NILP (window); window = w->next)
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1501 {
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1502 w = XWINDOW (window);
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1503
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1504 if (!NILP (w->buffer))
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1505 XBUFFER (w->buffer)->display_time = Fcurrent_time ();
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1506
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1507 if (!NILP (w->vchild))
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1508 make_frame_visible_1 (w->vchild);
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1509 if (!NILP (w->hchild))
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1510 make_frame_visible_1 (w->hchild);
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1511 }
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1512 }
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1513
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1514 DEFUN ("make-frame-invisible", Fmake_frame_invisible, Smake_frame_invisible,
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1515 0, 2, "",
39918
fa0407ac162f (Fset_mouse_position): Improve style of comment to follow other comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
1516 "Make the frame FRAME invisible (assuming it is an X window).\n\
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1517 If omitted, FRAME defaults to the currently selected frame.\n\
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1518 Normally you may not make FRAME invisible if all other frames are invisible,\n\
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1519 but if the second optional argument FORCE is non-nil, you may do so.")
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1520 (frame, force)
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1521 Lisp_Object frame, force;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1522 {
872
336ffe2bd537 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 785
diff changeset
1523 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1524 frame = selected_frame;
872
336ffe2bd537 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 785
diff changeset
1525
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1526 CHECK_LIVE_FRAME (frame, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1527
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1528 if (NILP (force) && !other_visible_frames (XFRAME (frame)))
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1529 error ("Attempt to make invisible the sole visible or iconified frame");
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
1530
8586
c78654909acf (Fmake_frame_invisible, Ficonify_frame): Don't switch frames.
Karl Heuer <kwzh@gnu.org>
parents: 8264
diff changeset
1531 #if 0 /* This isn't logically necessary, and it can do GC. */
3283
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1532 /* Don't let the frame remain selected. */
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1533 if (EQ (frame, selected_frame))
36810
a9485f8e43d6 (do_switch_frame): Remove unused parameter NO_EVENT, add
Gerd Moellmann <gerd@gnu.org>
parents: 36804
diff changeset
1534 do_switch_frame (next_frame (frame, Qt), 0, 0)
8586
c78654909acf (Fmake_frame_invisible, Ficonify_frame): Don't switch frames.
Karl Heuer <kwzh@gnu.org>
parents: 8264
diff changeset
1535 #endif
3283
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1536
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1537 /* Don't allow minibuf_window to remain on a deleted frame. */
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1538 if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window))
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1539 {
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1540 struct frame *sf = XFRAME (selected_frame);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1541 Fset_window_buffer (sf->minibuffer_window,
3283
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1542 XWINDOW (minibuf_window)->buffer);
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1543 minibuf_window = sf->minibuffer_window;
3283
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1544 }
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1545
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1546 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1547 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1548 if (FRAME_WINDOW_P (XFRAME (frame)))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1549 x_make_frame_invisible (XFRAME (frame));
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
1550 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1551
39918
fa0407ac162f (Fset_mouse_position): Improve style of comment to follow other comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
1552 /* Make menu bar update for the Buffers and Frames menus. */
7900
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7646
diff changeset
1553 windows_or_buffers_changed++;
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7646
diff changeset
1554
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1555 return Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1556 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1557
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1558 DEFUN ("iconify-frame", Ficonify_frame, Siconify_frame,
872
336ffe2bd537 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 785
diff changeset
1559 0, 1, "",
1251
4e556fda7a4d * frame.c (Fselect_frame, Fframe_root_window,
Jim Blandy <jimb@redhat.com>
parents: 1118
diff changeset
1560 "Make the frame FRAME into an icon.\n\
4e556fda7a4d * frame.c (Fselect_frame, Fframe_root_window,
Jim Blandy <jimb@redhat.com>
parents: 1118
diff changeset
1561 If omitted, FRAME defaults to the currently selected frame.")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1562 (frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1563 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1564 {
872
336ffe2bd537 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 785
diff changeset
1565 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1566 frame = selected_frame;
872
336ffe2bd537 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 785
diff changeset
1567
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1568 CHECK_LIVE_FRAME (frame, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1569
8586
c78654909acf (Fmake_frame_invisible, Ficonify_frame): Don't switch frames.
Karl Heuer <kwzh@gnu.org>
parents: 8264
diff changeset
1570 #if 0 /* This isn't logically necessary, and it can do GC. */
3283
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1571 /* Don't let the frame remain selected. */
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1572 if (EQ (frame, selected_frame))
3283
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1573 Fhandle_switch_frame (next_frame (frame, Qt), Qnil);
8586
c78654909acf (Fmake_frame_invisible, Ficonify_frame): Don't switch frames.
Karl Heuer <kwzh@gnu.org>
parents: 8264
diff changeset
1574 #endif
3283
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1575
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1576 /* Don't allow minibuf_window to remain on a deleted frame. */
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1577 if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window))
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1578 {
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1579 struct frame *sf = XFRAME (selected_frame);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1580 Fset_window_buffer (sf->minibuffer_window,
3283
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1581 XWINDOW (minibuf_window)->buffer);
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1582 minibuf_window = sf->minibuffer_window;
3283
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1583 }
e2a40a3baa4b (Ficonify_frame, Fmake_frame_invisible):
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
1584
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1585 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1586 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1587 if (FRAME_WINDOW_P (XFRAME (frame)))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1588 x_iconify_frame (XFRAME (frame));
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
1589 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1590
39918
fa0407ac162f (Fset_mouse_position): Improve style of comment to follow other comments.
Pavel Janík <Pavel@Janik.cz>
parents: 39748
diff changeset
1591 /* Make menu bar update for the Buffers and Frames menus. */
7900
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7646
diff changeset
1592 windows_or_buffers_changed++;
60795e826dad Put stdio.h after config.h.
Richard M. Stallman <rms@gnu.org>
parents: 7646
diff changeset
1593
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1594 return Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1595 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1596
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1597 DEFUN ("frame-visible-p", Fframe_visible_p, Sframe_visible_p,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1598 1, 1, 0,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1599 "Return t if FRAME is now \"visible\" (actually in use for display).\n\
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1600 A frame that is not \"visible\" is not updated and, if it works through\n\
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1601 a window system, it may not show at all.\n\
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
1602 Return the symbol `icon' if frame is visible only as an icon.")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1603 (frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1604 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1605 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1606 CHECK_LIVE_FRAME (frame, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1607
6012
650c0f231d17 (Fframe_visible_p): Do FRAME_SAMPLE_VISIBILITY first.
Richard M. Stallman <rms@gnu.org>
parents: 5925
diff changeset
1608 FRAME_SAMPLE_VISIBILITY (XFRAME (frame));
650c0f231d17 (Fframe_visible_p): Do FRAME_SAMPLE_VISIBILITY first.
Richard M. Stallman <rms@gnu.org>
parents: 5925
diff changeset
1609
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1610 if (FRAME_VISIBLE_P (XFRAME (frame)))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1611 return Qt;
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1612 if (FRAME_ICONIFIED_P (XFRAME (frame)))
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
1613 return Qicon;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1614 return Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1615 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1616
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1617 DEFUN ("visible-frame-list", Fvisible_frame_list, Svisible_frame_list,
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1618 0, 0, 0,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1619 "Return a list of all frames now \"visible\" (being updated).")
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1620 ()
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1621 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1622 Lisp_Object tail, frame;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1623 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1624 Lisp_Object value;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1625
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1626 value = Qnil;
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1627 for (tail = Vframe_list; CONSP (tail); tail = XCDR (tail))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1628 {
26164
d39ec0a27081 more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents: 26088
diff changeset
1629 frame = XCAR (tail);
9127
0b4836daa8e1 (Fframep, make_frame_without_minibuffer, do_switch_frame, prev_frame,
Karl Heuer <kwzh@gnu.org>
parents: 9032
diff changeset
1630 if (!FRAMEP (frame))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1631 continue;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1632 f = XFRAME (frame);
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1633 if (FRAME_VISIBLE_P (f))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1634 value = Fcons (frame, value);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1635 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1636 return value;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1637 }
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1638
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1639
11754
7691dbfc7571 (Fraise_frame, Flower_frame): Make arg FRAME optional.
Richard M. Stallman <rms@gnu.org>
parents: 11535
diff changeset
1640 DEFUN ("raise-frame", Fraise_frame, Sraise_frame, 0, 1, "",
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1641 "Bring FRAME to the front, so it occludes any frames it overlaps.\n\
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1642 If FRAME is invisible, make it visible.\n\
11211
2f9a24a4c9eb (Fraise_frame, Flower_frame): Now interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11169
diff changeset
1643 If you don't specify a frame, the selected frame is used.\n\
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1644 If Emacs is displaying on an ordinary terminal or some other device which\n\
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1645 doesn't support multiple overlapping frames, this function does nothing.")
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1646 (frame)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1647 Lisp_Object frame;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1648 {
11211
2f9a24a4c9eb (Fraise_frame, Flower_frame): Now interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11169
diff changeset
1649 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1650 frame = selected_frame;
11211
2f9a24a4c9eb (Fraise_frame, Flower_frame): Now interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11169
diff changeset
1651
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1652 CHECK_LIVE_FRAME (frame, 0);
4961
dd67510308ae (Fraise_frame): Do like the documentation says, and make
Richard M. Stallman <rms@gnu.org>
parents: 4798
diff changeset
1653
dd67510308ae (Fraise_frame): Do like the documentation says, and make
Richard M. Stallman <rms@gnu.org>
parents: 4798
diff changeset
1654 /* Do like the documentation says. */
dd67510308ae (Fraise_frame): Do like the documentation says, and make
Richard M. Stallman <rms@gnu.org>
parents: 4798
diff changeset
1655 Fmake_frame_visible (frame);
dd67510308ae (Fraise_frame): Do like the documentation says, and make
Richard M. Stallman <rms@gnu.org>
parents: 4798
diff changeset
1656
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1657 if (frame_raise_lower_hook)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1658 (*frame_raise_lower_hook) (XFRAME (frame), 1);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1659
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1660 return Qnil;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1661 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1662
2282
f727944c11aa * frame.c (Fraise_frame, Flower_frame): Renamed from
Jim Blandy <jimb@redhat.com>
parents: 2207
diff changeset
1663 /* Should we have a corresponding function called Flower_Power? */
11754
7691dbfc7571 (Fraise_frame, Flower_frame): Make arg FRAME optional.
Richard M. Stallman <rms@gnu.org>
parents: 11535
diff changeset
1664 DEFUN ("lower-frame", Flower_frame, Slower_frame, 0, 1, "",
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1665 "Send FRAME to the back, so it is occluded by any frames that overlap it.\n\
11211
2f9a24a4c9eb (Fraise_frame, Flower_frame): Now interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11169
diff changeset
1666 If you don't specify a frame, the selected frame is used.\n\
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1667 If Emacs is displaying on an ordinary terminal or some other device which\n\
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1668 doesn't support multiple overlapping frames, this function does nothing.")
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1669 (frame)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1670 Lisp_Object frame;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1671 {
11211
2f9a24a4c9eb (Fraise_frame, Flower_frame): Now interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11169
diff changeset
1672 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1673 frame = selected_frame;
11211
2f9a24a4c9eb (Fraise_frame, Flower_frame): Now interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11169
diff changeset
1674
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1675 CHECK_LIVE_FRAME (frame, 0);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1676
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1677 if (frame_raise_lower_hook)
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1678 (*frame_raise_lower_hook) (XFRAME (frame), 0);
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1679
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1680 return Qnil;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1681 }
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
1682
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1683
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1684 DEFUN ("redirect-frame-focus", Fredirect_frame_focus, Sredirect_frame_focus,
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1685 1, 2, 0,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1686 "Arrange for keystrokes typed at FRAME to be sent to FOCUS-FRAME.\n\
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1687 In other words, switch-frame events caused by events in FRAME will\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1688 request a switch to FOCUS-FRAME, and `last-event-frame' will be\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1689 FOCUS-FRAME after reading an event typed at FRAME.\n\
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1690 \n\
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1691 If FOCUS-FRAME is omitted or nil, any existing redirection is\n\
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1692 cancelled, and the frame again receives its own keystrokes.\n\
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1693 \n\
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1694 Focus redirection is useful for temporarily redirecting keystrokes to\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1695 a surrogate minibuffer frame when a frame doesn't have its own\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1696 minibuffer window.\n\
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1697 \n\
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1698 A frame's focus redirection can be changed by select-frame. If frame\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1699 FOO is selected, and then a different frame BAR is selected, any\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1700 frames redirecting their focus to FOO are shifted to redirect their\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1701 focus to BAR. This allows focus redirection to work properly when the\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1702 user switches from one frame to another using `select-window'.\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1703 \n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1704 This means that a frame whose focus is redirected to itself is treated\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1705 differently from a frame whose focus is redirected to nil; the former\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1706 is affected by select-frame, while the latter is not.\n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1707 \n\
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1708 The redirection lasts until `redirect-frame-focus' is called to change it.")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1709 (frame, focus_frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1710 Lisp_Object frame, focus_frame;
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1711 {
3970
020fe391d5c1 * frame.c (Fredirect_frame_focus): Allow redirection of focus of
Jim Blandy <jimb@redhat.com>
parents: 3834
diff changeset
1712 /* Note that we don't check for a live frame here. It's reasonable
020fe391d5c1 * frame.c (Fredirect_frame_focus): Allow redirection of focus of
Jim Blandy <jimb@redhat.com>
parents: 3834
diff changeset
1713 to redirect the focus of a frame you're about to delete, if you
020fe391d5c1 * frame.c (Fredirect_frame_focus): Allow redirection of focus of
Jim Blandy <jimb@redhat.com>
parents: 3834
diff changeset
1714 know what other frame should receive those keystrokes. */
020fe391d5c1 * frame.c (Fredirect_frame_focus): Allow redirection of focus of
Jim Blandy <jimb@redhat.com>
parents: 3834
diff changeset
1715 CHECK_FRAME (frame, 0);
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
1716
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1717 if (! NILP (focus_frame))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1718 CHECK_LIVE_FRAME (focus_frame, 1);
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1719
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1720 XFRAME (frame)->focus_frame = focus_frame;
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1721
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1722 if (frame_rehighlight_hook)
11535
ae282c46aec2 (Fredirect_frame_focus): Fix earlier change; use a frame known to be non-nil.
Karl Heuer <kwzh@gnu.org>
parents: 11532
diff changeset
1723 (*frame_rehighlight_hook) (XFRAME (frame));
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1724
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1725 return Qnil;
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1726 }
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1727
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1728
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1729 DEFUN ("frame-focus", Fframe_focus, Sframe_focus, 1, 1, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1730 "Return the frame to which FRAME's keystrokes are currently being sent.\n\
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1731 This returns nil if FRAME's focus is not redirected.\n\
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1732 See `redirect-frame-focus'.")
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1733 (frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1734 Lisp_Object frame;
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1735 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1736 CHECK_LIVE_FRAME (frame, 0);
1709
b86b3237e017 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1691
diff changeset
1737
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1738 return FRAME_FOCUS_FRAME (XFRAME (frame));
363
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1739 }
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1740
f4f9b557d934 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 335
diff changeset
1741
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1742
10207
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1743 /* Return the value of frame parameter PROP in frame FRAME. */
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1744
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1745 Lisp_Object
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1746 get_frame_param (frame, prop)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1747 register struct frame *frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1748 Lisp_Object prop;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1749 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1750 register Lisp_Object tem;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1751
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1752 tem = Fassq (prop, frame->param_alist);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1753 if (EQ (tem, Qnil))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1754 return tem;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1755 return Fcdr (tem);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1756 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1757
10207
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1758 /* Return the buffer-predicate of the selected frame. */
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1759
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1760 Lisp_Object
22188
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1761 frame_buffer_predicate (frame)
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1762 Lisp_Object frame;
10207
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1763 {
22188
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1764 return XFRAME (frame)->buffer_predicate;
10207
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1765 }
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1766
17221
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1767 /* Return the buffer-list of the selected frame. */
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1768
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1769 Lisp_Object
22188
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1770 frame_buffer_list (frame)
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1771 Lisp_Object frame;
17221
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1772 {
22188
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1773 return XFRAME (frame)->buffer_list;
17221
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1774 }
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1775
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1776 /* Set the buffer-list of the selected frame. */
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1777
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1778 void
22188
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1779 set_frame_buffer_list (frame, list)
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1780 Lisp_Object frame, list;
17221
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1781 {
22188
9fba463768ec (frame_buffer_predicate): New arg FRAME.
Richard M. Stallman <rms@gnu.org>
parents: 21825
diff changeset
1782 XFRAME (frame)->buffer_list = list;
17221
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1783 }
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1784
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1785 /* Discard BUFFER from the buffer-list of each frame. */
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1786
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1787 void
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1788 frames_discard_buffer (buffer)
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1789 Lisp_Object buffer;
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1790 {
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1791 Lisp_Object frame, tail;
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1792
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1793 FOR_EACH_FRAME (tail, frame)
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1794 {
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1795 XFRAME (frame)->buffer_list
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1796 = Fdelq (buffer, XFRAME (frame)->buffer_list);
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1797 }
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1798 }
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1799
17235
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1800 /* Move BUFFER to the end of the buffer-list of each frame. */
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1801
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1802 void
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1803 frames_bury_buffer (buffer)
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1804 Lisp_Object buffer;
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1805 {
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1806 Lisp_Object frame, tail;
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1807
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1808 FOR_EACH_FRAME (tail, frame)
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1809 {
28930
963baceb2414 (frames_bury_buffer): Don't add a buffer to the frame's
Gerd Moellmann <gerd@gnu.org>
parents: 28225
diff changeset
1810 struct frame *f = XFRAME (frame);
963baceb2414 (frames_bury_buffer): Don't add a buffer to the frame's
Gerd Moellmann <gerd@gnu.org>
parents: 28225
diff changeset
1811 Lisp_Object found;
963baceb2414 (frames_bury_buffer): Don't add a buffer to the frame's
Gerd Moellmann <gerd@gnu.org>
parents: 28225
diff changeset
1812
963baceb2414 (frames_bury_buffer): Don't add a buffer to the frame's
Gerd Moellmann <gerd@gnu.org>
parents: 28225
diff changeset
1813 found = Fmemq (buffer, f->buffer_list);
963baceb2414 (frames_bury_buffer): Don't add a buffer to the frame's
Gerd Moellmann <gerd@gnu.org>
parents: 28225
diff changeset
1814 if (!NILP (found))
963baceb2414 (frames_bury_buffer): Don't add a buffer to the frame's
Gerd Moellmann <gerd@gnu.org>
parents: 28225
diff changeset
1815 f->buffer_list = nconc2 (Fdelq (buffer, f->buffer_list),
963baceb2414 (frames_bury_buffer): Don't add a buffer to the frame's
Gerd Moellmann <gerd@gnu.org>
parents: 28225
diff changeset
1816 Fcons (buffer, Qnil));
17235
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1817 }
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1818 }
5905b103d7ea (frames_bury_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 17221
diff changeset
1819
10207
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1820 /* Modify the alist in *ALISTPTR to associate PROP with VAL.
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1821 If the alist already has an element for PROP, we change it. */
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1822
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1823 void
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
1824 store_in_alist (alistptr, prop, val)
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1825 Lisp_Object *alistptr, val;
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
1826 Lisp_Object prop;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1827 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1828 register Lisp_Object tem;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1829
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1830 tem = Fassq (prop, *alistptr);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1831 if (EQ (tem, Qnil))
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1832 *alistptr = Fcons (Fcons (prop, val), *alistptr);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1833 else
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1834 Fsetcdr (tem, val);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1835 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1836
20280
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1837 static int
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1838 frame_name_fnn_p (str, len)
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1839 char *str;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1840 int len;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1841 {
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1842 if (len > 1 && str[0] == 'F')
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1843 {
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1844 char *end_ptr;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1845
25789
d68642dd5bbf (frame_name_fnn_p): Fix previous change.
Eli Zaretskii <eliz@gnu.org>
parents: 25736
diff changeset
1846 strtol (str + 1, &end_ptr, 10);
d68642dd5bbf (frame_name_fnn_p): Fix previous change.
Eli Zaretskii <eliz@gnu.org>
parents: 25736
diff changeset
1847
20280
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1848 if (end_ptr == str + len)
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1849 return 1;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1850 }
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1851 return 0;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1852 }
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1853
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1854 /* Set the name of the terminal frame. Also used by MSDOS frames.
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1855 Modeled after x_set_name which is used for WINDOW frames. */
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1856
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1857 void
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1858 set_term_frame_name (f, name)
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1859 struct frame *f;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1860 Lisp_Object name;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1861 {
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1862 f->explicit_name = ! NILP (name);
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1863
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1864 /* If NAME is nil, set the name to F<num>. */
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1865 if (NILP (name))
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1866 {
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1867 char namebuf[20];
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1868
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1869 /* Check for no change needed in this very common case
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1870 before we do any consing. */
20622
619c69f1ab83 (set_term_frame_name): Use size_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20280
diff changeset
1871 if (frame_name_fnn_p (XSTRING (f->name)->data,
21244
50929073a0ba Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents: 20622
diff changeset
1872 STRING_BYTES (XSTRING (f->name))))
20280
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1873 return;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1874
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1875 terminal_frame_count++;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1876 sprintf (namebuf, "F%d", terminal_frame_count);
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1877 name = build_string (namebuf);
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1878 }
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1879 else
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1880 {
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1881 CHECK_STRING (name, 0);
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1882
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1883 /* Don't change the name if it's already NAME. */
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1884 if (! NILP (Fstring_equal (name, f->name)))
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1885 return;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1886
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1887 /* Don't allow the user to set the frame name to F<num>, so it
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1888 doesn't clash with the names we generate for terminal frames. */
21244
50929073a0ba Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents: 20622
diff changeset
1889 if (frame_name_fnn_p (XSTRING (name)->data, STRING_BYTES (XSTRING (name))))
20280
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1890 error ("Frame names of the form F<num> are usurped by Emacs");
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1891 }
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1892
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1893 f->name = name;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1894 update_mode_lines = 1;
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1895 }
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1896
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1897 void
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1898 store_frame_param (f, prop, val)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1899 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1900 Lisp_Object prop, val;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1901 {
29616
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1902 register Lisp_Object old_alist_elt;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1903
29616
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1904 /* The buffer-alist parameter is stored in a special place and is
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1905 not in the alist. */
17221
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1906 if (EQ (prop, Qbuffer_list))
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1907 {
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1908 f->buffer_list = val;
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1909 return;
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1910 }
0530a375eb21 (frame_buffer_list, set_frame_buffer_list): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17032
diff changeset
1911
29616
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1912 /* If PROP is a symbol which is supposed to have frame-local values,
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1913 and it is set up based on this frame, switch to the global
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1914 binding. That way, we can create or alter the frame-local binding
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1915 without messing up the symbol's status. */
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1916 if (SYMBOLP (prop))
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1917 {
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1918 Lisp_Object valcontents;
39581
6d9fa06012a6 Use SYMBOL_VALUE/SET_SYMBOL_VALUE macros instead of accessing
Gerd Moellmann <gerd@gnu.org>
parents: 39503
diff changeset
1919 valcontents = SYMBOL_VALUE (prop);
29616
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1920 if ((BUFFER_LOCAL_VALUEP (valcontents)
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1921 || SOME_BUFFER_LOCAL_VALUEP (valcontents))
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1922 && XBUFFER_LOCAL_VALUE (valcontents)->check_frame
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1923 && XFRAME (XBUFFER_LOCAL_VALUE (valcontents)->frame) == f)
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1924 swap_in_global_binding (prop);
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1925 }
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1926
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1927 /* Update the frame parameter alist. */
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1928 old_alist_elt = Fassq (prop, f->param_alist);
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1929 if (EQ (old_alist_elt, Qnil))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1930 f->param_alist = Fcons (Fcons (prop, val), f->param_alist);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1931 else
29616
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1932 Fsetcdr (old_alist_elt, val);
539
b99d4eb7ed93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1933
29616
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1934 /* Update some other special parameters in their special places
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1935 in addition to the alist. */
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
1936
10207
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1937 if (EQ (prop, Qbuffer_predicate))
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1938 f->buffer_predicate = val;
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
1939
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
1940 if (! FRAME_WINDOW_P (f))
20280
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1941 {
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1942 if (EQ (prop, Qmenu_bar_lines))
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1943 set_menu_bar_lines (f, val, make_number (FRAME_MENU_BAR_LINES (f)));
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1944 else if (EQ (prop, Qname))
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1945 set_term_frame_name (f, val);
7916c0d8f2ae (frame_name_fnn_p, set_term_frame_name): New functions.
Eli Zaretskii <eliz@gnu.org>
parents: 20178
diff changeset
1946 }
12761
bffb5ea6fb43 Move various Q... vars to top of file, unconditional.
Richard M. Stallman <rms@gnu.org>
parents: 12742
diff changeset
1947
9127
0b4836daa8e1 (Fframep, make_frame_without_minibuffer, do_switch_frame, prev_frame,
Karl Heuer <kwzh@gnu.org>
parents: 9032
diff changeset
1948 if (EQ (prop, Qminibuffer) && WINDOWP (val))
539
b99d4eb7ed93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1949 {
b99d4eb7ed93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1950 if (! MINI_WINDOW_P (XWINDOW (val)))
b99d4eb7ed93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1951 error ("Surrogate minibuffer windows must be minibuffer windows.");
b99d4eb7ed93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1952
25710
ee1da070c50f (Fnext_frame): Remove unused variable(s).
Gerd Moellmann <gerd@gnu.org>
parents: 25669
diff changeset
1953 if ((FRAME_HAS_MINIBUF_P (f) || FRAME_MINIBUF_ONLY_P (f))
16371
906cef1d36bd (store_frame_param): Allow setting a frame's minibuffer
Karl Heuer <kwzh@gnu.org>
parents: 16280
diff changeset
1954 && !EQ (val, f->minibuffer_window))
906cef1d36bd (store_frame_param): Allow setting a frame's minibuffer
Karl Heuer <kwzh@gnu.org>
parents: 16280
diff changeset
1955 error ("Can't change the surrogate minibuffer of a frame with its own minibuffer");
539
b99d4eb7ed93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1956
b99d4eb7ed93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1957 /* Install the chosen minibuffer window, with proper buffer. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1958 f->minibuffer_window = val;
539
b99d4eb7ed93 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1959 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1960 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1961
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1962 DEFUN ("frame-parameters", Fframe_parameters, Sframe_parameters, 0, 1, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1963 "Return the parameters-alist of frame FRAME.\n\
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1964 It is a list of elements of the form (PARM . VALUE), where PARM is a symbol.\n\
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
1965 The meaningful PARMs depend on the kind of frame.\n\
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
1966 If FRAME is omitted, return information on the currently selected frame.")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1967 (frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1968 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1969 {
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1970 Lisp_Object alist;
7162
06a13bf36a8c (Fframe_parameters) [!MULTI_FRAME]: Unstub it again.
Karl Heuer <kwzh@gnu.org>
parents: 7134
diff changeset
1971 FRAME_PTR f;
15062
de7528327c39 (Fframe_parameters, both definitions):
Richard M. Stallman <rms@gnu.org>
parents: 15001
diff changeset
1972 int height, width;
27575
2344fab04513 (Fframe_parameters): Add GCPRO because tty_color_name can GC.
Gerd Moellmann <gerd@gnu.org>
parents: 26729
diff changeset
1973 struct gcpro gcpro1;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1974
36804
e4331ae9636d (Fframe_parameters): In the `buffer-list' frame
Gerd Moellmann <gerd@gnu.org>
parents: 36433
diff changeset
1975 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1976 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1977
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1978 CHECK_FRAME (frame, 0);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
1979 f = XFRAME (frame);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1980
7162
06a13bf36a8c (Fframe_parameters) [!MULTI_FRAME]: Unstub it again.
Karl Heuer <kwzh@gnu.org>
parents: 7134
diff changeset
1981 if (!FRAME_LIVE_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1982 return Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1983
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
1984 alist = Fcopy_alist (f->param_alist);
27575
2344fab04513 (Fframe_parameters): Add GCPRO because tty_color_name can GC.
Gerd Moellmann <gerd@gnu.org>
parents: 26729
diff changeset
1985 GCPRO1 (alist);
2344fab04513 (Fframe_parameters): Add GCPRO because tty_color_name can GC.
Gerd Moellmann <gerd@gnu.org>
parents: 26729
diff changeset
1986
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
1987 if (!FRAME_WINDOW_P (f))
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
1988 {
25117
f6f34f0bc1af (make_terminal_frame) [MSDOS]: Don't call
Eli Zaretskii <eliz@gnu.org>
parents: 25030
diff changeset
1989 int fg = FRAME_FOREGROUND_PIXEL (f);
f6f34f0bc1af (make_terminal_frame) [MSDOS]: Don't call
Eli Zaretskii <eliz@gnu.org>
parents: 25030
diff changeset
1990 int bg = FRAME_BACKGROUND_PIXEL (f);
32545
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
1991 Lisp_Object elt;
25117
f6f34f0bc1af (make_terminal_frame) [MSDOS]: Don't call
Eli Zaretskii <eliz@gnu.org>
parents: 25030
diff changeset
1992
32545
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
1993 /* If the frame's parameter alist says the colors are
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
1994 unspecified and reversed, take the frame's background pixel
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
1995 for foreground and vice versa. */
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
1996 elt = Fassq (Qforeground_color, alist);
33005
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
1997 if (!NILP (elt) && CONSP (elt) && STRINGP (XCDR (elt)))
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
1998 {
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
1999 if (strncmp (XSTRING (XCDR (elt))->data,
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2000 unspecified_bg,
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2001 XSTRING (XCDR (elt))->size) == 0)
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2002 store_in_alist (&alist, Qforeground_color, tty_color_name (f, bg));
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2003 else if (strncmp (XSTRING (XCDR (elt))->data,
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2004 unspecified_fg,
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2005 XSTRING (XCDR (elt))->size) == 0)
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2006 store_in_alist (&alist, Qforeground_color, tty_color_name (f, fg));
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2007 }
32545
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2008 else
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2009 store_in_alist (&alist, Qforeground_color, tty_color_name (f, fg));
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2010 elt = Fassq (Qbackground_color, alist);
33005
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2011 if (!NILP (elt) && CONSP (elt) && STRINGP (XCDR (elt)))
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2012 {
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2013 if (strncmp (XSTRING (XCDR (elt))->data,
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2014 unspecified_fg,
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2015 XSTRING (XCDR (elt))->size) == 0)
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2016 store_in_alist (&alist, Qbackground_color, tty_color_name (f, fg));
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2017 else if (strncmp (XSTRING (XCDR (elt))->data,
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2018 unspecified_bg,
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2019 XSTRING (XCDR (elt))->size) == 0)
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2020 store_in_alist (&alist, Qbackground_color, tty_color_name (f, bg));
87893013088c (Fframe_parameters): Fix the change from 2000-10-16:
Eli Zaretskii <eliz@gnu.org>
parents: 32909
diff changeset
2021 }
32545
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2022 else
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2023 store_in_alist (&alist, Qbackground_color, tty_color_name (f, bg));
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
2024 store_in_alist (&alist, intern ("font"),
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
2025 build_string (FRAME_MSDOS_P (f)
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 26164
diff changeset
2026 ? "ms-dos"
35003
c6726a1e70ce (make_terminal_frame) [WINDOWSNT]: Make terminal frames
Andrew Innes <andrewi@gnu.org>
parents: 33760
diff changeset
2027 : FRAME_W32_P (f) ? "w32term"
c6726a1e70ce (make_terminal_frame) [WINDOWSNT]: Make terminal frames
Andrew Innes <andrewi@gnu.org>
parents: 33760
diff changeset
2028 :"tty"));
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
2029 }
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
2030 store_in_alist (&alist, Qname, f->name);
15062
de7528327c39 (Fframe_parameters, both definitions):
Richard M. Stallman <rms@gnu.org>
parents: 15001
diff changeset
2031 height = (FRAME_NEW_HEIGHT (f) ? FRAME_NEW_HEIGHT (f) : FRAME_HEIGHT (f));
de7528327c39 (Fframe_parameters, both definitions):
Richard M. Stallman <rms@gnu.org>
parents: 15001
diff changeset
2032 store_in_alist (&alist, Qheight, make_number (height));
de7528327c39 (Fframe_parameters, both definitions):
Richard M. Stallman <rms@gnu.org>
parents: 15001
diff changeset
2033 width = (FRAME_NEW_WIDTH (f) ? FRAME_NEW_WIDTH (f) : FRAME_WIDTH (f));
de7528327c39 (Fframe_parameters, both definitions):
Richard M. Stallman <rms@gnu.org>
parents: 15001
diff changeset
2034 store_in_alist (&alist, Qwidth, make_number (width));
7162
06a13bf36a8c (Fframe_parameters) [!MULTI_FRAME]: Unstub it again.
Karl Heuer <kwzh@gnu.org>
parents: 7134
diff changeset
2035 store_in_alist (&alist, Qmodeline, (FRAME_WANTS_MODELINE_P (f) ? Qt : Qnil));
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
2036 store_in_alist (&alist, Qminibuffer,
1870
d90e9fecad48 * frame.c (Fframe_parameters): Report the `minibuffer' parameter of
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
2037 (! FRAME_HAS_MINIBUF_P (f) ? Qnil
7162
06a13bf36a8c (Fframe_parameters) [!MULTI_FRAME]: Unstub it again.
Karl Heuer <kwzh@gnu.org>
parents: 7134
diff changeset
2038 : FRAME_MINIBUF_ONLY_P (f) ? Qonly
06a13bf36a8c (Fframe_parameters) [!MULTI_FRAME]: Unstub it again.
Karl Heuer <kwzh@gnu.org>
parents: 7134
diff changeset
2039 : FRAME_MINIBUF_WINDOW (f)));
06a13bf36a8c (Fframe_parameters) [!MULTI_FRAME]: Unstub it again.
Karl Heuer <kwzh@gnu.org>
parents: 7134
diff changeset
2040 store_in_alist (&alist, Qunsplittable, (FRAME_NO_SPLIT_P (f) ? Qt : Qnil));
36804
e4331ae9636d (Fframe_parameters): In the `buffer-list' frame
Gerd Moellmann <gerd@gnu.org>
parents: 36433
diff changeset
2041 store_in_alist (&alist, Qbuffer_list, frame_buffer_list (frame));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2042
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
2043 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2044 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2045 if (FRAME_WINDOW_P (f))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2046 x_report_frame_params (f, &alist);
8244
15d4c2bd29e6 [MULTI_FRAME] (Fframe_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 8168
diff changeset
2047 else
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
2048 #endif
8904
af3ff2dbaddd (Fframe_parameters): Fix Lisp_Object vs. int problems.
Karl Heuer <kwzh@gnu.org>
parents: 8685
diff changeset
2049 {
af3ff2dbaddd (Fframe_parameters): Fix Lisp_Object vs. int problems.
Karl Heuer <kwzh@gnu.org>
parents: 8685
diff changeset
2050 /* This ought to be correct in f->param_alist for an X frame. */
af3ff2dbaddd (Fframe_parameters): Fix Lisp_Object vs. int problems.
Karl Heuer <kwzh@gnu.org>
parents: 8685
diff changeset
2051 Lisp_Object lines;
9309
27370f65dfa1 (make_frame, Fframe_parameters, Fselected_frame, syms_of_frame): Don't use
Karl Heuer <kwzh@gnu.org>
parents: 9268
diff changeset
2052 XSETFASTINT (lines, FRAME_MENU_BAR_LINES (f));
8904
af3ff2dbaddd (Fframe_parameters): Fix Lisp_Object vs. int problems.
Karl Heuer <kwzh@gnu.org>
parents: 8685
diff changeset
2053 store_in_alist (&alist, Qmenu_bar_lines, lines);
af3ff2dbaddd (Fframe_parameters): Fix Lisp_Object vs. int problems.
Karl Heuer <kwzh@gnu.org>
parents: 8685
diff changeset
2054 }
27575
2344fab04513 (Fframe_parameters): Add GCPRO because tty_color_name can GC.
Gerd Moellmann <gerd@gnu.org>
parents: 26729
diff changeset
2055
2344fab04513 (Fframe_parameters): Add GCPRO because tty_color_name can GC.
Gerd Moellmann <gerd@gnu.org>
parents: 26729
diff changeset
2056 UNGCPRO;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2057 return alist;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2058 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2059
31399
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2060
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2061 DEFUN ("frame-parameter", Fframe_parameter, Sframe_parameter, 2, 2, 0,
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2062 "Return FRAME's value for parameter PARAMETER.\n\
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2063 If FRAME is nil, describe the currently selected frame.")
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2064 (frame, parameter)
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2065 Lisp_Object frame, parameter;
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2066 {
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2067 struct frame *f;
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2068 Lisp_Object value;
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2069
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2070 if (NILP (frame))
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2071 frame = selected_frame;
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2072 else
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2073 CHECK_FRAME (frame, 0);
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2074 CHECK_SYMBOL (parameter, 1);
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2075
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2076 f = XFRAME (frame);
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2077 value = Qnil;
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2078
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2079 if (FRAME_LIVE_P (f))
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2080 {
31442
cb166d3ac8e7 (Fframe_parameter): Handle `name' specially.
Gerd Moellmann <gerd@gnu.org>
parents: 31399
diff changeset
2081 if (EQ (parameter, Qname))
cb166d3ac8e7 (Fframe_parameter): Handle `name' specially.
Gerd Moellmann <gerd@gnu.org>
parents: 31399
diff changeset
2082 value = f->name;
31448
70b366918608 (Fframe_parameter): Handle `name' and `background-mode'
Gerd Moellmann <gerd@gnu.org>
parents: 31442
diff changeset
2083 #ifdef HAVE_X_WINDOWS
70b366918608 (Fframe_parameter): Handle `name' and `background-mode'
Gerd Moellmann <gerd@gnu.org>
parents: 31442
diff changeset
2084 else if (EQ (parameter, Qdisplay) && FRAME_X_P (f))
70b366918608 (Fframe_parameter): Handle `name' and `background-mode'
Gerd Moellmann <gerd@gnu.org>
parents: 31442
diff changeset
2085 value = XCAR (FRAME_X_DISPLAY_INFO (f)->name_list_element);
70b366918608 (Fframe_parameter): Handle `name' and `background-mode'
Gerd Moellmann <gerd@gnu.org>
parents: 31442
diff changeset
2086 #endif /* HAVE_X_WINDOWS */
31399
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2087 else
31442
cb166d3ac8e7 (Fframe_parameter): Handle `name' specially.
Gerd Moellmann <gerd@gnu.org>
parents: 31399
diff changeset
2088 {
cb166d3ac8e7 (Fframe_parameter): Handle `name' specially.
Gerd Moellmann <gerd@gnu.org>
parents: 31399
diff changeset
2089 value = Fassq (parameter, f->param_alist);
cb166d3ac8e7 (Fframe_parameter): Handle `name' specially.
Gerd Moellmann <gerd@gnu.org>
parents: 31399
diff changeset
2090 if (CONSP (value))
32254
f93728883f64 (Fframe_parameter): For non-windowed frames, if
Eli Zaretskii <eliz@gnu.org>
parents: 31470
diff changeset
2091 {
f93728883f64 (Fframe_parameter): For non-windowed frames, if
Eli Zaretskii <eliz@gnu.org>
parents: 31470
diff changeset
2092 value = XCDR (value);
f93728883f64 (Fframe_parameter): For non-windowed frames, if
Eli Zaretskii <eliz@gnu.org>
parents: 31470
diff changeset
2093 /* Fframe_parameters puts the actual fg/bg color names,
f93728883f64 (Fframe_parameter): For non-windowed frames, if
Eli Zaretskii <eliz@gnu.org>
parents: 31470
diff changeset
2094 even if f->param_alist says otherwise. This is
f93728883f64 (Fframe_parameter): For non-windowed frames, if
Eli Zaretskii <eliz@gnu.org>
parents: 31470
diff changeset
2095 important when param_alist's notion of colors is
f93728883f64 (Fframe_parameter): For non-windowed frames, if
Eli Zaretskii <eliz@gnu.org>
parents: 31470
diff changeset
2096 "unspecified". We need to do the same here. */
f93728883f64 (Fframe_parameter): For non-windowed frames, if
Eli Zaretskii <eliz@gnu.org>
parents: 31470
diff changeset
2097 if (STRINGP (value) && !FRAME_WINDOW_P (f))
f93728883f64 (Fframe_parameter): For non-windowed frames, if
Eli Zaretskii <eliz@gnu.org>
parents: 31470
diff changeset
2098 {
32545
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2099 char *color_name;
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2100 EMACS_INT csz;
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2101
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2102 if (EQ (parameter, Qbackground_color))
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2103 {
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2104 color_name = XSTRING (value)->data;
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2105 csz = XSTRING (value)->size;
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2106 if (strncmp (color_name, unspecified_bg, csz) == 0)
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2107 value = tty_color_name (f, FRAME_BACKGROUND_PIXEL (f));
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2108 else if (strncmp (color_name, unspecified_fg, csz) == 0)
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2109 value = tty_color_name (f, FRAME_FOREGROUND_PIXEL (f));
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2110 }
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2111 else if (EQ (parameter, Qforeground_color))
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2112 {
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2113 color_name = XSTRING (value)->data;
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2114 csz = XSTRING (value)->size;
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2115 if (strncmp (color_name, unspecified_fg, csz) == 0)
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2116 value = tty_color_name (f, FRAME_FOREGROUND_PIXEL (f));
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2117 else if (strncmp (color_name, unspecified_bg, csz) == 0)
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2118 value = tty_color_name (f, FRAME_BACKGROUND_PIXEL (f));
288723d38c06 (Fframe_parameters): If a tty's frame's param_alist says
Eli Zaretskii <eliz@gnu.org>
parents: 32254
diff changeset
2119 }
32254
f93728883f64 (Fframe_parameter): For non-windowed frames, if
Eli Zaretskii <eliz@gnu.org>
parents: 31470
diff changeset
2120 }
f93728883f64 (Fframe_parameter): For non-windowed frames, if
Eli Zaretskii <eliz@gnu.org>
parents: 31470
diff changeset
2121 }
31448
70b366918608 (Fframe_parameter): Handle `name' and `background-mode'
Gerd Moellmann <gerd@gnu.org>
parents: 31442
diff changeset
2122 else if (EQ (parameter, Qdisplay_type)
70b366918608 (Fframe_parameter): Handle `name' and `background-mode'
Gerd Moellmann <gerd@gnu.org>
parents: 31442
diff changeset
2123 || EQ (parameter, Qbackground_mode))
70b366918608 (Fframe_parameter): Handle `name' and `background-mode'
Gerd Moellmann <gerd@gnu.org>
parents: 31442
diff changeset
2124 /* Avoid consing in frequent cases. */
31442
cb166d3ac8e7 (Fframe_parameter): Handle `name' specially.
Gerd Moellmann <gerd@gnu.org>
parents: 31399
diff changeset
2125 value = Qnil;
cb166d3ac8e7 (Fframe_parameter): Handle `name' specially.
Gerd Moellmann <gerd@gnu.org>
parents: 31399
diff changeset
2126 else
cb166d3ac8e7 (Fframe_parameter): Handle `name' specially.
Gerd Moellmann <gerd@gnu.org>
parents: 31399
diff changeset
2127 value = Fcdr (Fassq (parameter, Fframe_parameters (frame)));
cb166d3ac8e7 (Fframe_parameter): Handle `name' specially.
Gerd Moellmann <gerd@gnu.org>
parents: 31399
diff changeset
2128 }
31399
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2129 }
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2130
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2131 return value;
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2132 }
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2133
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2134
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2135 DEFUN ("modify-frame-parameters", Fmodify_frame_parameters,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2136 Smodify_frame_parameters, 2, 2, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2137 "Modify the parameters of frame FRAME according to ALIST.\n\
35817
b102dd3ed2a3 (Fmodify_frame_parameters): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 35660
diff changeset
2138 If FRAME is nil, it defaults to the selected frame.\n\
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2139 ALIST is an alist of parameters to change and their new values.\n\
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2140 Each element of ALIST has the form (PARM . VALUE), where PARM is a symbol.\n\
16536
a144fa66d84b (Fmodify_frame_parameters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16371
diff changeset
2141 The meaningful PARMs depend on the kind of frame.\n\
a144fa66d84b (Fmodify_frame_parameters): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 16371
diff changeset
2142 Undefined PARMs are ignored, but stored in the frame's parameter list\n\
29616
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
2143 so that `frame-parameters' will return them.\n\
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
2144 \n\
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
2145 The value of frame parameter FOO can also be accessed\n\
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
2146 as a frame-local binding for the variable FOO, if you have\n\
8d7a0f575a0e (Fmodify_frame_parameters): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 28930
diff changeset
2147 enabled such bindings for that variable with `make-variable-frame-local'.")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2148 (frame, alist)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2149 Lisp_Object frame, alist;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2150 {
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
2151 FRAME_PTR f;
25710
ee1da070c50f (Fnext_frame): Remove unused variable(s).
Gerd Moellmann <gerd@gnu.org>
parents: 25669
diff changeset
2152 register Lisp_Object tail, prop, val;
33509
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2153 int count = BINDING_STACK_SIZE ();
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2154
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2155 /* Bind this to t to inhibit initialization of the default face from
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2156 X resources in face-set-after-frame-default. If we don't inhibit
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2157 this, modifying the `font' frame parameter, for example, while
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2158 there is a `default.attributeFont' X resource, won't work,
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2159 because `default's font is reset to the value of the X resource
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2160 and that resets the `font' frame parameter. */
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2161 specbind (Qinhibit_default_face_x_resources, Qt);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2162
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2163 if (EQ (frame, Qnil))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2164 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2165 CHECK_LIVE_FRAME (frame, 0);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2166 f = XFRAME (frame);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2167
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
2168 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2169 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2170 if (FRAME_WINDOW_P (f))
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
2171 x_set_frame_parameters (f, alist);
10207
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
2172 else
e6618f52efe9 (Fmodify_frame_parameters): For non-X frames,
Richard M. Stallman <rms@gnu.org>
parents: 9972
diff changeset
2173 #endif
15391
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
2174 #ifdef MSDOS
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
2175 if (FRAME_MSDOS_P (f))
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
2176 IT_set_frame_parameters (f, alist);
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
2177 else
d4cec5d7566d (Fset_mouse_position): Remove the DOS-specific
Richard M. Stallman <rms@gnu.org>
parents: 15062
diff changeset
2178 #endif
25523
9e9eeb68482e (Fframep) [macintosh]: Handle mac frame type.
Richard M. Stallman <rms@gnu.org>
parents: 25350
diff changeset
2179
16568
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2180 {
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2181 int length = XINT (Flength (alist));
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2182 int i;
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2183 Lisp_Object *parms
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2184 = (Lisp_Object *) alloca (length * sizeof (Lisp_Object));
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2185 Lisp_Object *values
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2186 = (Lisp_Object *) alloca (length * sizeof (Lisp_Object));
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2187
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2188 /* Extract parm names and values into those vectors. */
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2189
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2190 i = 0;
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2191 for (tail = alist; CONSP (tail); tail = Fcdr (tail))
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2192 {
25710
ee1da070c50f (Fnext_frame): Remove unused variable(s).
Gerd Moellmann <gerd@gnu.org>
parents: 25669
diff changeset
2193 Lisp_Object elt;
16568
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2194
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2195 elt = Fcar (tail);
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2196 parms[i] = Fcar (elt);
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2197 values[i] = Fcdr (elt);
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2198 i++;
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2199 }
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2200
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2201 /* Now process them in reverse of specified order. */
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2202 for (i--; i >= 0; i--)
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2203 {
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2204 prop = parms[i];
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2205 val = values[i];
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2206 store_frame_param (f, prop, val);
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2207 }
cc6d85f9df0f (Fmodify_frame_parameters): Use alist in reverse order.
Richard M. Stallman <rms@gnu.org>
parents: 16536
diff changeset
2208 }
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2209
33509
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2210 return unbind_to (count, Qnil);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2211 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2212
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2213 DEFUN ("frame-char-height", Fframe_char_height, Sframe_char_height,
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2214 0, 1, 0,
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2215 "Height in pixels of a line in the font in frame FRAME.\n\
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2216 If FRAME is omitted, the selected frame is used.\n\
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2217 For a terminal frame, the value is always 1.")
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2218 (frame)
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2219 Lisp_Object frame;
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2220 {
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2221 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2222
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2223 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2224 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2225 CHECK_FRAME (frame, 0);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2226 f = XFRAME (frame);
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
2227
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2228 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2229 if (FRAME_WINDOW_P (f))
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2230 return make_number (x_char_height (f));
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2231 else
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2232 #endif
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2233 return make_number (1);
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2234 }
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2235
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2236
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2237 DEFUN ("frame-char-width", Fframe_char_width, Sframe_char_width,
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2238 0, 1, 0,
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2239 "Width in pixels of characters in the font in frame FRAME.\n\
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2240 If FRAME is omitted, the selected frame is used.\n\
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2241 The width is the same for all characters, because\n\
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2242 currently Emacs supports only fixed-width fonts.\n\
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2243 For a terminal screen, the value is always 1.")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2244 (frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2245 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2246 {
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2247 struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2248
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2249 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2250 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2251 CHECK_FRAME (frame, 0);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2252 f = XFRAME (frame);
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2253
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2254 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2255 if (FRAME_WINDOW_P (f))
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2256 return make_number (x_char_width (f));
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2257 else
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
2258 #endif
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2259 return make_number (1);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2260 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2261
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2262 DEFUN ("frame-pixel-height", Fframe_pixel_height,
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2263 Sframe_pixel_height, 0, 1, 0,
3676
5160a6967f80 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3658
diff changeset
2264 "Return a FRAME's height in pixels.\n\
19532
9dcee56b2966 (Fframe_pixel_height): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18945
diff changeset
2265 This counts only the height available for text lines,\n\
9dcee56b2966 (Fframe_pixel_height): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18945
diff changeset
2266 not menu bars on window-system Emacs frames.\n\
3676
5160a6967f80 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3658
diff changeset
2267 For a terminal frame, the result really gives the height in characters.\n\
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2268 If FRAME is omitted, the selected frame is used.")
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2269 (frame)
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2270 Lisp_Object frame;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2271 {
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2272 struct frame *f;
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2273
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2274 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2275 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2276 CHECK_FRAME (frame, 0);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2277 f = XFRAME (frame);
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2278
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2279 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2280 if (FRAME_WINDOW_P (f))
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2281 return make_number (x_pixel_height (f));
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2282 else
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2283 #endif
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2284 return make_number (FRAME_HEIGHT (f));
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2285 }
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2286
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2287 DEFUN ("frame-pixel-width", Fframe_pixel_width,
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2288 Sframe_pixel_width, 0, 1, 0,
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2289 "Return FRAME's width in pixels.\n\
3676
5160a6967f80 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 3658
diff changeset
2290 For a terminal frame, the result really gives the width in characters.\n\
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2291 If FRAME is omitted, the selected frame is used.")
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2292 (frame)
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2293 Lisp_Object frame;
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2294 {
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2295 struct frame *f;
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2296
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2297 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2298 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2299 CHECK_FRAME (frame, 0);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2300 f = XFRAME (frame);
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2301
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2302 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2303 if (FRAME_WINDOW_P (f))
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2304 return make_number (x_pixel_width (f));
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2305 else
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
2306 #endif
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2307 return make_number (FRAME_WIDTH (f));
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2308 }
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2309
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2310 DEFUN ("set-frame-height", Fset_frame_height, Sset_frame_height, 2, 3, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2311 "Specify that the frame FRAME has LINES lines.\n\
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2312 Optional third arg non-nil means that redisplay should use LINES lines\n\
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2313 but that the idea of the actual height of the frame should not be changed.")
14077
a6d3ce4a2f8e (Fhandle_switch_frame, Fset_frame_height): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13748
diff changeset
2314 (frame, lines, pretend)
a6d3ce4a2f8e (Fhandle_switch_frame, Fset_frame_height): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13748
diff changeset
2315 Lisp_Object frame, lines, pretend;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2316 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2317 register struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2318
14077
a6d3ce4a2f8e (Fhandle_switch_frame, Fset_frame_height): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13748
diff changeset
2319 CHECK_NUMBER (lines, 0);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2320 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2321 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2322 CHECK_LIVE_FRAME (frame, 0);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2323 f = XFRAME (frame);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2324
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
2325 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2326 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2327 if (FRAME_WINDOW_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2328 {
14077
a6d3ce4a2f8e (Fhandle_switch_frame, Fset_frame_height): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13748
diff changeset
2329 if (XINT (lines) != f->height)
a6d3ce4a2f8e (Fhandle_switch_frame, Fset_frame_height): Harmonize arguments with
Erik Naggum <erik@naggum.no>
parents: 13748
diff changeset
2330 x_set_window_size (f, 1, f->width, XINT (lines));
25350
f964a1e5b29c Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents: 25209
diff changeset
2331 do_pending_window_change (0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2332 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2333 else
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
2334 #endif
25350
f964a1e5b29c Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents: 25209
diff changeset
2335 change_frame_size (f, XINT (lines), 0, !NILP (pretend), 0, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2336 return Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2337 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2338
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2339 DEFUN ("set-frame-width", Fset_frame_width, Sset_frame_width, 2, 3, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2340 "Specify that the frame FRAME has COLS columns.\n\
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2341 Optional third arg non-nil means that redisplay should use COLS columns\n\
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2342 but that the idea of the actual width of the frame should not be changed.")
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2343 (frame, cols, pretend)
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
2344 Lisp_Object frame, cols, pretend;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2345 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2346 register struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2347 CHECK_NUMBER (cols, 0);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2348 if (NILP (frame))
25669
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2349 frame = selected_frame;
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2350 CHECK_LIVE_FRAME (frame, 0);
97d5951366cd (Fmake_terminal_frame): Use SELECTED_FRAME.
Gerd Moellmann <gerd@gnu.org>
parents: 25544
diff changeset
2351 f = XFRAME (frame);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2352
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
2353 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2354 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2355 if (FRAME_WINDOW_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2356 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2357 if (XINT (cols) != f->width)
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
2358 x_set_window_size (f, 1, XINT (cols), f->height);
25350
f964a1e5b29c Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents: 25209
diff changeset
2359 do_pending_window_change (0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2360 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2361 else
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
2362 #endif
25350
f964a1e5b29c Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents: 25209
diff changeset
2363 change_frame_size (f, 0, XINT (cols), !NILP (pretend), 0, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2364 return Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2365 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2366
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2367 DEFUN ("set-frame-size", Fset_frame_size, Sset_frame_size, 3, 3, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2368 "Sets size of FRAME to COLS by ROWS, measured in characters.")
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2369 (frame, cols, rows)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2370 Lisp_Object frame, cols, rows;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2371 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2372 register struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2373
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2374 CHECK_LIVE_FRAME (frame, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2375 CHECK_NUMBER (cols, 2);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2376 CHECK_NUMBER (rows, 1);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2377 f = XFRAME (frame);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2378
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
2379 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2380 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2381 if (FRAME_WINDOW_P (f))
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2382 {
14966
a8d71d222bb7 (Fset_frame_size): Do call Fset_frame_size
Richard M. Stallman <rms@gnu.org>
parents: 14303
diff changeset
2383 if (XINT (rows) != f->height || XINT (cols) != f->width
a8d71d222bb7 (Fset_frame_size): Do call Fset_frame_size
Richard M. Stallman <rms@gnu.org>
parents: 14303
diff changeset
2384 || FRAME_NEW_HEIGHT (f) || FRAME_NEW_WIDTH (f))
5925
806e876cacb4 (Fset_frame_height, Fset_frame_width, Fset_frame_size):
Richard M. Stallman <rms@gnu.org>
parents: 5552
diff changeset
2385 x_set_window_size (f, 1, XINT (cols), XINT (rows));
25350
f964a1e5b29c Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents: 25209
diff changeset
2386 do_pending_window_change (0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2387 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2388 else
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
2389 #endif
25350
f964a1e5b29c Call change_frame_size and do_pending_window_change with
Gerd Moellmann <gerd@gnu.org>
parents: 25209
diff changeset
2390 change_frame_size (f, XINT (rows), XINT (cols), 0, 0, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2391
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2392 return Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2393 }
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2394
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2395 DEFUN ("set-frame-position", Fset_frame_position,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2396 Sset_frame_position, 3, 3, 0,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2397 "Sets position of FRAME in pixels to XOFFSET by YOFFSET.\n\
4341
d07ef5ea3b58 (Fdelete_frame): New arg FORCE allows deletion of last non-invisible frame.
Richard M. Stallman <rms@gnu.org>
parents: 4227
diff changeset
2398 This is actually the position of the upper left corner of the frame.\n\
d07ef5ea3b58 (Fdelete_frame): New arg FORCE allows deletion of last non-invisible frame.
Richard M. Stallman <rms@gnu.org>
parents: 4227
diff changeset
2399 Negative values for XOFFSET or YOFFSET are interpreted relative to\n\
4412
12c4e5b53463 (Fset_frame_position): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 4341
diff changeset
2400 the rightmost or bottommost possible position (that stays within the screen).")
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2401 (frame, xoffset, yoffset)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2402 Lisp_Object frame, xoffset, yoffset;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2403 {
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2404 register struct frame *f;
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2405
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2406 CHECK_LIVE_FRAME (frame, 0);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2407 CHECK_NUMBER (xoffset, 1);
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2408 CHECK_NUMBER (yoffset, 2);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2409 f = XFRAME (frame);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2410
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
2411 /* I think this should be done with a hook. */
13412
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2412 #ifdef HAVE_WINDOW_SYSTEM
1ed740e9aa64 [HAVE_NTGUI]: Test for a Win32 frame in procedures that test for an X frame.
Geoff Voelker <voelker@cs.washington.edu>
parents: 13396
diff changeset
2413 if (FRAME_WINDOW_P (f))
6921
50060d486c47 (Fset_frame_position): Pass new arg to x_set_offset.
Richard M. Stallman <rms@gnu.org>
parents: 6854
diff changeset
2414 x_set_offset (f, XINT (xoffset), XINT (yoffset), 1);
965
0eb68c6c452a * frame.c (Qheight, Qicon, Qmodeline, Qname, Qnone, Qonly,
Jim Blandy <jimb@redhat.com>
parents: 886
diff changeset
2415 #endif
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2416
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2417 return Qt;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2418 }
777
c99faf9381bb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
2419
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2420
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21359
diff changeset
2421 void
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2422 syms_of_frame ()
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2423 {
33509
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2424 Qframep = intern ("framep");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2425 staticpro (&Qframep);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2426 Qframe_live_p = intern ("frame-live-p");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2427 staticpro (&Qframe_live_p);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2428 Qheight = intern ("height");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2429 staticpro (&Qheight);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2430 Qicon = intern ("icon");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2431 staticpro (&Qicon);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2432 Qminibuffer = intern ("minibuffer");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2433 staticpro (&Qminibuffer);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2434 Qmodeline = intern ("modeline");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2435 staticpro (&Qmodeline);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2436 Qname = intern ("name");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2437 staticpro (&Qname);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2438 Qonly = intern ("only");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2439 staticpro (&Qonly);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2440 Qunsplittable = intern ("unsplittable");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2441 staticpro (&Qunsplittable);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2442 Qmenu_bar_lines = intern ("menu-bar-lines");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2443 staticpro (&Qmenu_bar_lines);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2444 Qtool_bar_lines = intern ("tool-bar-lines");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2445 staticpro (&Qtool_bar_lines);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2446 Qwidth = intern ("width");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2447 staticpro (&Qwidth);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2448 Qx = intern ("x");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2449 staticpro (&Qx);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2450 Qw32 = intern ("w32");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2451 staticpro (&Qw32);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2452 Qpc = intern ("pc");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2453 staticpro (&Qpc);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2454 Qmac = intern ("mac");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2455 staticpro (&Qmac);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2456 Qvisible = intern ("visible");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2457 staticpro (&Qvisible);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2458 Qbuffer_predicate = intern ("buffer-predicate");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2459 staticpro (&Qbuffer_predicate);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2460 Qbuffer_list = intern ("buffer-list");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2461 staticpro (&Qbuffer_list);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2462 Qtitle = intern ("title");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2463 staticpro (&Qtitle);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2464 Qdisplay_type = intern ("display-type");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2465 staticpro (&Qdisplay_type);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2466 Qbackground_mode = intern ("background-mode");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2467 staticpro (&Qbackground_mode);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2468
33509
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2469 DEFVAR_LISP ("default-frame-alist", &Vdefault_frame_alist,
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2470 "Alist of default values for frame creation.\n\
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2471 These may be set in your init file, like this:\n\
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2472 (setq default-frame-alist '((width . 80) (height . 55) (menu-bar-lines . 1))\n\
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2473 These override values given in window system configuration data,\n\
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2474 including X Windows' defaults database.\n\
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2475 For values specific to the first Emacs frame, see `initial-frame-alist'.\n\
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2476 For values specific to the separate minibuffer frame, see\n\
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2477 `minibuffer-frame-alist'.\n\
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2478 The `menu-bar-lines' element of the list controls whether new frames\n\
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2479 have menu bars; `menu-bar-mode' works by altering this element.");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2480 Vdefault_frame_alist = Qnil;
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2481
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2482 Qinhibit_default_face_x_resources
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2483 = intern ("inhibit-default-face-x-resources");
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2484 staticpro (&Qinhibit_default_face_x_resources);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2485
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2486 DEFVAR_LISP ("terminal-frame", &Vterminal_frame,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2487 "The initial frame-object, which represents Emacs's stdout.");
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2488
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2489 DEFVAR_LISP ("emacs-iconified", &Vemacs_iconified,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2490 "Non-nil if all of emacs is iconified and frame updates are not needed.");
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2491 Vemacs_iconified = Qnil;
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2492
27795
83292274bbd4 (Vmouse_position_function): New variable.
Dave Love <fx@gnu.org>
parents: 27725
diff changeset
2493 DEFVAR_LISP ("mouse-position-function", &Vmouse_position_function,
39220
0e11cabc9dfb Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39219
diff changeset
2494 "If non-nil, function to transform normal value of `mouse-position'.\n\
0e11cabc9dfb Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39219
diff changeset
2495 `mouse-position' calls this function, passing its usual return value as\n\
0e11cabc9dfb Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39219
diff changeset
2496 argument, and returns whatever this function returns.\n\
0e11cabc9dfb Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 39219
diff changeset
2497 This abnormal hook exists for the benefit of packages like `xt-mouse.el'\n\
27795
83292274bbd4 (Vmouse_position_function): New variable.
Dave Love <fx@gnu.org>
parents: 27725
diff changeset
2498 which need to do mouse handling at the Lisp level.");
83292274bbd4 (Vmouse_position_function): New variable.
Dave Love <fx@gnu.org>
parents: 27725
diff changeset
2499 Vmouse_position_function = Qnil;
83292274bbd4 (Vmouse_position_function): New variable.
Dave Love <fx@gnu.org>
parents: 27725
diff changeset
2500
11779
6234b3610a6f Vdefault_minibuffer_frame is now part of KBOARD instead
Karl Heuer <kwzh@gnu.org>
parents: 11775
diff changeset
2501 DEFVAR_KBOARD ("default-minibuffer-frame", Vdefault_minibuffer_frame,
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2502 "Minibufferless frames use this frame's minibuffer.\n\
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
2503 \n\
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2504 Emacs cannot create minibufferless frames unless this is set to an\n\
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
2505 appropriate surrogate.\n\
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
2506 \n\
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
2507 Emacs consults this variable only when creating minibufferless\n\
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2508 frames; once the frame is created, it sticks with its assigned\n\
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
2509 minibuffer, no matter what this variable is set to. This means that\n\
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
2510 this variable doesn't necessarily say anything meaningful about the\n\
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2511 current set of frames, or where the minibuffer is currently being\n\
39503
dd3ea41ff0f7 (syms_of_frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 39220
diff changeset
2512 displayed.\n\
dd3ea41ff0f7 (syms_of_frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 39220
diff changeset
2513 \n\
dd3ea41ff0f7 (syms_of_frame): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 39220
diff changeset
2514 This variable is local to the current terminal and cannot be buffer-local.");
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2515
33509
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2516 staticpro (&Vframe_list);
a7d245e080d1 (syms_of_frame_1): Removed; code moved to syms_of_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 33005
diff changeset
2517
11169
d0550c056e5b [MULTI_FRAME] (Factive_minibuffer_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 11126
diff changeset
2518 defsubr (&Sactive_minibuffer_window);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2519 defsubr (&Sframep);
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1809
diff changeset
2520 defsubr (&Sframe_live_p);
10768
938451cf1b10 (Fmake_terminal_frame): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10676
diff changeset
2521 defsubr (&Smake_terminal_frame);
2298
872a3a2c3fed * frame.c (Fhandle_switch_frame): Renamed from Fselect_frame.
Jim Blandy <jimb@redhat.com>
parents: 2282
diff changeset
2522 defsubr (&Shandle_switch_frame);
12283
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
2523 defsubr (&Signore_event);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2524 defsubr (&Sselect_frame);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2525 defsubr (&Sselected_frame);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2526 defsubr (&Swindow_frame);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2527 defsubr (&Sframe_root_window);
7570
20cbb114367b (syms_of_frame): Set up frame-first-window as Lisp fn.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
2528 defsubr (&Sframe_first_window);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2529 defsubr (&Sframe_selected_window);
7055
5e4906d964b8 (Fset_frame_selected_window): New function.
Richard M. Stallman <rms@gnu.org>
parents: 7025
diff changeset
2530 defsubr (&Sset_frame_selected_window);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2531 defsubr (&Sframe_list);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2532 defsubr (&Snext_frame);
4424
027d3affb2f8 (Fprevious_frame): New function, for parity with Fnext_frame.
Roland McGrath <roland@gnu.org>
parents: 4412
diff changeset
2533 defsubr (&Sprevious_frame);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2534 defsubr (&Sdelete_frame);
454
ca410e0b4797 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 386
diff changeset
2535 defsubr (&Smouse_position);
7025
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
2536 defsubr (&Smouse_pixel_position);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2537 defsubr (&Sset_mouse_position);
7025
24e759919770 (Fmouse_pixel_position, Fset_mouse_pixel_position): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 6986
diff changeset
2538 defsubr (&Sset_mouse_pixel_position);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2539 #if 0
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2540 defsubr (&Sframe_configuration);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2541 defsubr (&Srestore_frame_configuration);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2542 #endif
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2543 defsubr (&Smake_frame_visible);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2544 defsubr (&Smake_frame_invisible);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2545 defsubr (&Siconify_frame);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2546 defsubr (&Sframe_visible_p);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2547 defsubr (&Svisible_frame_list);
2282
f727944c11aa * frame.c (Fraise_frame, Flower_frame): Renamed from
Jim Blandy <jimb@redhat.com>
parents: 2207
diff changeset
2548 defsubr (&Sraise_frame);
f727944c11aa * frame.c (Fraise_frame, Flower_frame): Renamed from
Jim Blandy <jimb@redhat.com>
parents: 2207
diff changeset
2549 defsubr (&Slower_frame);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2550 defsubr (&Sredirect_frame_focus);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2551 defsubr (&Sframe_focus);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2552 defsubr (&Sframe_parameters);
31399
db831ffcd565 (Qdisplay_type): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 31102
diff changeset
2553 defsubr (&Sframe_parameter);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2554 defsubr (&Smodify_frame_parameters);
2068
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2555 defsubr (&Sframe_char_height);
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2556 defsubr (&Sframe_char_width);
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2557 defsubr (&Sframe_pixel_height);
6357ea40643c (Fframe_char_height, Fframe_char_width):
Richard M. Stallman <rms@gnu.org>
parents: 1989
diff changeset
2558 defsubr (&Sframe_pixel_width);
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2559 defsubr (&Sset_frame_height);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2560 defsubr (&Sset_frame_width);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2561 defsubr (&Sset_frame_size);
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 756
diff changeset
2562 defsubr (&Sset_frame_position);
286
8a40ab4a424f Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2563 }
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 714
diff changeset
2564
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21359
diff changeset
2565 void
1385
a4a205bdd2c1 * frame.c: #include "commands.h" and "keyboard.h".
Jim Blandy <jimb@redhat.com>
parents: 1346
diff changeset
2566 keys_of_frame ()
a4a205bdd2c1 * frame.c: #include "commands.h" and "keyboard.h".
Jim Blandy <jimb@redhat.com>
parents: 1346
diff changeset
2567 {
2298
872a3a2c3fed * frame.c (Fhandle_switch_frame): Renamed from Fselect_frame.
Jim Blandy <jimb@redhat.com>
parents: 2282
diff changeset
2568 initial_define_lispy_key (global_map, "switch-frame", "handle-switch-frame");
9214
a31be7afcc83 (keys_of_frame): Make binding for delete-frame.
Richard M. Stallman <rms@gnu.org>
parents: 9127
diff changeset
2569 initial_define_lispy_key (global_map, "delete-frame", "handle-delete-frame");
12283
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
2570 initial_define_lispy_key (global_map, "iconify-frame", "ignore-event");
fd9043d15414 [MULTI_FRAME] (Fignore_event): New function.
Karl Heuer <kwzh@gnu.org>
parents: 12255
diff changeset
2571 initial_define_lispy_key (global_map, "make-frame-visible", "ignore-event");
1385
a4a205bdd2c1 * frame.c: #include "commands.h" and "keyboard.h".
Jim Blandy <jimb@redhat.com>
parents: 1346
diff changeset
2572 }