diff src/dispnew.c @ 83370:5272862a4865

Fix crashes in xdialog_show (and other places) with xterm-mouse-mode. * src/dispextern.h (get_tty_device): Declare. * src/dispnew.c (Fsend_string_to_terminal): Add optional TERMINAL parameter. * src/fns.c (Fy_or_n_p, Fyes_or_no_p): Don't try to open an X dialog on tty terminals. * src/term.c (get_tty_device): Remove static qualifier. * src/xmenu.c (create_and_show_dialog, create_and_show_popup_menu) (free_frame_menubar, mouse_position_for_popup, set_frame_menubar) (update_frame_menubar, x_activate_menubar, xdialog_show, xmenu_show): Abort when given a non-X frame. * src/xmenu.c (Fx_popup_menu, Fx_popup_dialog): Throw an error when run on a non-X frame. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-410
author Karoly Lorentey <lorentey@elte.hu>
date Sun, 11 Sep 2005 03:15:42 +0000
parents c3dd82172ed1
children 08b4dd6a6e87
line wrap: on
line diff
--- a/src/dispnew.c	Sun Sep 11 03:06:33 2005 +0000
+++ b/src/dispnew.c	Sun Sep 11 03:15:42 2005 +0000
@@ -6285,21 +6285,27 @@
 
 
 DEFUN ("send-string-to-terminal", Fsend_string_to_terminal,
-       Ssend_string_to_terminal, 1, 1, 0,
+       Ssend_string_to_terminal, 1, 2, 0,
        doc: /* Send STRING to the terminal without alteration.
-Control characters in STRING will have terminal-dependent effects.  */)
-     (string)
+Control characters in STRING will have terminal-dependent effects.
+
+Optional parameter TERMINAL specifies the tty display device to use.
+It may be a terminal id, a frame, or nil for the terminal used by the
+currently selected frame.  */)
+  (string, display)
      Lisp_Object string;
+     Lisp_Object display;
 {
+  struct device *d = get_tty_device (display);
   struct tty_display_info *tty;
 
   /* ??? Perhaps we should do something special for multibyte strings here.  */
   CHECK_STRING (string);
 
-  if (! FRAME_TERMCAP_P (SELECTED_FRAME ()))
-    error ("Current frame is not on a tty device");
-
-  tty = CURTTY ();
+  if (!d)
+    error ("Unknown display device");
+
+  tty = d->display_info.tty;
   
   if (tty->termscript)
     {