From 55d5acfaa4c4e03d58a2c9800a6f9efb13dde1a2 Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Thu, 17 May 2007 13:17:56 +0000 Subject: [PATCH] * term.c (init_tty): Better initialize ttys in windows. * w32fns.c (Fx_create_frame): Set the default minibuffer frame, window_system and the rest of the frame parameters following what is done in X11. --- src/ChangeLog.multi-tty | 7 +++++++ src/term.c | 23 ++++++++++++++++++++--- src/w32fns.c | 16 ++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog.multi-tty b/src/ChangeLog.multi-tty index 75a6e2e272..8fdbaa8aa5 100644 --- a/src/ChangeLog.multi-tty +++ b/src/ChangeLog.multi-tty @@ -1,3 +1,10 @@ +2007-05-17 Dan Nicolaescu + + * term.c (init_tty): Better initialize ttys in windows. + * w32fns.c (Fx_create_frame): Set the default minibuffer frame, + window_system and the rest of the frame parameters following what + is done in X11. + 2007-05-17 Jason Rumney * w32term.h (x_output): Remove foreground_pixel and background_pixel. diff --git a/src/term.c b/src/term.c index 82b30b18af..04d5f74fc2 100644 --- a/src/term.c +++ b/src/term.c @@ -2424,6 +2424,7 @@ init_tty (char *name, char *terminal_type, int must_succeed) "Unknown terminal type", "Unknown terminal type"); +#ifndef WINDOWSNT if (name == NULL) name = "/dev/tty"; if (!strcmp (name, "/dev/tty")) @@ -2437,7 +2438,8 @@ init_tty (char *name, char *terminal_type, int must_succeed) terminal = get_named_tty (name); if (terminal) return terminal; - +#endif + terminal = create_terminal (); tty = (struct tty_display_info *) xmalloc (sizeof (struct tty_display_info)); bzero (tty, sizeof (struct tty_display_info)); @@ -2451,6 +2453,7 @@ init_tty (char *name, char *terminal_type, int must_succeed) tty->Wcm = (struct cm *) xmalloc (sizeof (struct cm)); Wcm_clear (tty); +#ifndef WINDOWSNT set_tty_hooks (terminal); { @@ -2497,19 +2500,33 @@ init_tty (char *name, char *terminal_type, int must_succeed) tty->input = file; tty->output = file; } - + tty->type = xstrdup (terminal_type); add_keyboard_wait_descriptor (fileno (tty->input)); +#endif + encode_terminal_bufsize = 0; #ifdef WINDOWSNT initialize_w32_display (); + /* XXX Can this be non-null? */ + if (name) + { + tty->name = xstrdup (name); + terminal->name = xstrdup (name); + } + tty->type = xstrdup (terminal_type); + + /* XXX not sure if this line is correct. If it is not set then we + crash in update_display_1. */ + tty->output = stdout; + Wcm_clear (tty); - area = (char *) xmalloc (2044); + area = (char *) xmalloc (2044); /* XXX this seems unused. */ { struct frame *f = XFRAME (selected_frame); diff --git a/src/w32fns.c b/src/w32fns.c index 7c46615478..0dbe2131e7 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -4430,6 +4430,22 @@ This function is an internal primitive--use `make-frame' instead. */) /* Must have been Qnil. */ ; } + + /* Initialize `default-minibuffer-frame' in case this is the first + frame on this terminal. */ + if (FRAME_HAS_MINIBUF_P (f) + && (!FRAMEP (kb->Vdefault_minibuffer_frame) + || !FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame)))) + kb->Vdefault_minibuffer_frame = frame; + + /* All remaining specified parameters, which have not been "used" + by x_get_arg and friends, now go in the misc. alist of the frame. */ + for (tem = parameters; !NILP (tem); tem = XCDR (tem)) + if (CONSP (XCAR (tem)) && !NILP (XCAR (XCAR (tem)))) + f->param_alist = Fcons (XCAR (tem), f->param_alist); + + store_frame_param (f, Qwindow_system, Qw32); + UNGCPRO; /* Make sure windows on this frame appear in calls to next-window -- 2.20.1