Mercurial > emacs
comparison src/frame.c @ 10768:938451cf1b10
(Fmake_terminal_frame): New function.
(syms_of_frame): defsubr it.
(make_terminal_frame): Init Vframe_list only the first time.
Set visible and async_visible directly.
(redisplay): Don't display nonselected terminal frames.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 17 Feb 1995 08:09:33 +0000 |
parents | 12ce96dd2afb |
children | bb2d929daaa3 |
comparison
equal
deleted
inserted
replaced
10767:2954efb1d06c | 10768:938451cf1b10 |
---|---|
321 return f; | 321 return f; |
322 } | 322 } |
323 | 323 |
324 /* Construct a frame that refers to the terminal (stdin and stdout). */ | 324 /* Construct a frame that refers to the terminal (stdin and stdout). */ |
325 | 325 |
326 static int terminal_frame_count; | |
327 | |
326 struct frame * | 328 struct frame * |
327 make_terminal_frame () | 329 make_terminal_frame () |
328 { | 330 { |
329 register struct frame *f; | 331 register struct frame *f; |
330 Lisp_Object frame; | 332 Lisp_Object frame; |
331 | 333 char name[20]; |
332 Vframe_list = Qnil; | 334 |
335 /* The first call must initialize Vframe_list. */ | |
336 if (! (NILP (Vframe_list) || CONSP (Vframe_list))) | |
337 Vframe_list = Qnil; | |
338 | |
333 f = make_frame (1); | 339 f = make_frame (1); |
334 | 340 |
335 XSETFRAME (frame, f); | 341 XSETFRAME (frame, f); |
336 Vframe_list = Fcons (frame, Vframe_list); | 342 Vframe_list = Fcons (frame, Vframe_list); |
337 | 343 |
338 f->name = build_string ("terminal"); | 344 terminal_frame_count++; |
339 FRAME_SET_VISIBLE (f, 1); | 345 sprintf (name, "terminal-%d", terminal_frame_count); |
340 f->display.nothing = 1; /* Nonzero means frame isn't deleted. */ | 346 |
347 f->name = build_string (name); | |
348 f->visible = 1; /* FRAME_SET_VISIBLE wd set frame_garbaged. */ | |
349 f->async_visible = 1; /* Don't let visible be cleared later. */ | |
350 f->display.nothing = 1; /* Nonzero means frame isn't deleted. */ | |
341 XSETFRAME (Vterminal_frame, f); | 351 XSETFRAME (Vterminal_frame, f); |
342 return f; | 352 return f; |
353 } | |
354 | |
355 DEFUN ("make-terminal-frame", Fmake_terminal_frame, Smake_terminal_frame, | |
356 1, 1, 0, "") | |
357 (parms) | |
358 Lisp_Object parms; | |
359 { | |
360 struct frame *f; | |
361 Lisp_Object frame; | |
362 | |
363 if (selected_frame->output_method != output_termcap) | |
364 error ("Not using an ASCII terminal now; cannot make a new ASCII frame"); | |
365 | |
366 f = make_terminal_frame (); | |
367 change_frame_size (f, FRAME_HEIGHT (selected_frame), | |
368 FRAME_WIDTH (selected_frame), 0, 0); | |
369 remake_frame_glyphs (f); | |
370 calculate_costs (f); | |
371 XSETFRAME (frame, f); | |
372 Fmodify_frame_parameters (frame, parms); | |
373 return frame; | |
343 } | 374 } |
344 | 375 |
345 static Lisp_Object | 376 static Lisp_Object |
346 do_switch_frame (frame, no_enter, track) | 377 do_switch_frame (frame, no_enter, track) |
347 Lisp_Object frame, no_enter; | 378 Lisp_Object frame, no_enter; |
406 Fredirect_frame_focus (xfocus, frame); | 437 Fredirect_frame_focus (xfocus, frame); |
407 } | 438 } |
408 } | 439 } |
409 #endif /* HAVE_X_WINDOWS */ | 440 #endif /* HAVE_X_WINDOWS */ |
410 #endif /* ! 0 */ | 441 #endif /* ! 0 */ |
442 | |
443 if (FRAME_TERMCAP_P (XFRAME (frame))) | |
444 { | |
445 /* Since frames on an ASCII terminal share the same display area, | |
446 switching means we must redisplay the whole thing. */ | |
447 windows_or_buffers_changed++; | |
448 SET_FRAME_GARBAGED (XFRAME (frame)); | |
449 } | |
411 | 450 |
412 selected_frame = XFRAME (frame); | 451 selected_frame = XFRAME (frame); |
413 if (! FRAME_MINIBUF_ONLY_P (selected_frame)) | 452 if (! FRAME_MINIBUF_ONLY_P (selected_frame)) |
414 last_nonminibuf_frame = selected_frame; | 453 last_nonminibuf_frame = selected_frame; |
415 | 454 |
1808 have menu bars; `menu-bar-mode' works by altering this element."); | 1847 have menu bars; `menu-bar-mode' works by altering this element."); |
1809 Vdefault_frame_alist = Qnil; | 1848 Vdefault_frame_alist = Qnil; |
1810 | 1849 |
1811 defsubr (&Sframep); | 1850 defsubr (&Sframep); |
1812 defsubr (&Sframe_live_p); | 1851 defsubr (&Sframe_live_p); |
1852 defsubr (&Smake_terminal_frame); | |
1813 defsubr (&Shandle_switch_frame); | 1853 defsubr (&Shandle_switch_frame); |
1814 defsubr (&Sselect_frame); | 1854 defsubr (&Sselect_frame); |
1815 defsubr (&Sselected_frame); | 1855 defsubr (&Sselected_frame); |
1816 defsubr (&Swindow_frame); | 1856 defsubr (&Swindow_frame); |
1817 defsubr (&Sframe_root_window); | 1857 defsubr (&Sframe_root_window); |