changeset 47731:755c4233cfba

* frame.c (Vdelete_frame_functions): New variable. (syms_of_frame): Initialize and defvar it. (Fdelete_frame): Use it instead of delete-frame-hook. Don't run it when frame's `tooltip' parameter is non-nil. * xfns.c (x_create_tip_frame): Set `tooltip' frame parameter to t. * w32fns.c (x_create_tip_frame): Likewise * macfns.c (x_create_tip_frame): Likewise.
author John Paul Wallington <jpw@pobox.com>
date Wed, 02 Oct 2002 08:28:17 +0000
parents 2568d5a27317
children 3712c799f805
files src/ChangeLog src/frame.c src/macfns.c src/w32fns.c src/xfns.c
diffstat 5 files changed, 43 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Tue Oct 01 20:27:23 2002 +0000
+++ b/src/ChangeLog	Wed Oct 02 08:28:17 2002 +0000
@@ -1,3 +1,16 @@
+2002-10-02  John Paul Wallington  <jpw@shootybangbang.com>
+
+	* frame.c (Vdelete_frame_functions): New variable.
+	(syms_of_frame): Initialize and defvar it.
+	(Fdelete_frame): Use it instead of delete-frame-hook.  Don't run
+	it when frame's `tooltip' parameter is non-nil.
+
+	* xfns.c (x_create_tip_frame): Set `tooltip' frame parameter to t.
+
+	* w32fns.c (x_create_tip_frame): Likewise
+
+	* macfns.c (x_create_tip_frame): Likewise.
+
 2002-09-30  Kenichi Handa  <handa@m17n.org>
 
 	* xterm.c (x_encode_char): For DIM=1 charset, set ccl->reg[2] to
--- a/src/frame.c	Tue Oct 01 20:27:23 2002 +0000
+++ b/src/frame.c	Wed Oct 02 08:28:17 2002 +0000
@@ -80,6 +80,7 @@
 Lisp_Object Vdefault_frame_alist;
 Lisp_Object Vmouse_position_function;
 Lisp_Object Vmouse_highlight;
+Lisp_Object Vdelete_frame_functions;
 
 static void
 set_menu_bar_lines_1 (window, n)
@@ -1092,8 +1093,9 @@
 Normally, you may not delete a frame if all other frames are invisible,
 but if the second optional argument FORCE is non-nil, you may do so.
 
-This function runs `delete-frame-hook' before actually deleting the
-frame.  The hook is called with one argument FRAME.  */)
+This function runs `delete-frame-functions' before actually deleting the
+frame, unless the frame is a tooltip.
+The functions are run with one arg, the frame to be deleted.  */)
      (frame, force)
      Lisp_Object frame, force;
 {
@@ -1152,11 +1154,12 @@
 	}
     }
 
-  /* Run `delete-frame-hook'.  */
-  if (!NILP (Vrun_hooks))
+  /* Run `delete-frame-functions' unless frame is a tooltip.  */
+  if (!NILP (Vrun_hooks)
+      && NILP (Fframe_parameter (frame, intern ("tooltip"))))
     {
       Lisp_Object args[2];
-      args[0] = intern ("delete-frame-hook");
+      args[0] = intern ("delete-frame-functions");
       args[1] = frame;
       Frun_hook_with_args (2, args);
     }
@@ -2529,6 +2532,12 @@
 when the mouse is over clickable text.  */);
   Vmouse_highlight = Qt;
 
+  DEFVAR_LISP ("delete-frame-functions", &Vdelete_frame_functions,
+	       doc: /* Functions to be run before deleting a frame.
+The functions are run with one arg, the frame to be deleted.
+See `delete-frame'.  */);
+  Vdelete_frame_functions = Qnil;
+
   DEFVAR_KBOARD ("default-minibuffer-frame", Vdefault_minibuffer_frame,
 		 doc: /* Minibufferless frames use this frame's minibuffer.
 
--- a/src/macfns.c	Tue Oct 01 20:27:23 2002 +0000
+++ b/src/macfns.c	Wed Oct 02 08:28:17 2002 +0000
@@ -9471,6 +9471,11 @@
   f->height = 0;
   SET_FRAME_WIDTH (f, 0);
   change_frame_size (f, height, width, 1, 0, 0);
+  
+  /* Add `tooltip' frame parameter's default value. */
+  if (NILP (Fframe_parameter (frame, intern ("tooltip"))))
+    Fmodify_frame_parameters (frame, Fcons (Fcons (intern ("tooltip"), Qt),
+					    Qnil));
 
   f->no_split = 1;
 
--- a/src/w32fns.c	Tue Oct 01 20:27:23 2002 +0000
+++ b/src/w32fns.c	Wed Oct 02 08:28:17 2002 +0000
@@ -13812,6 +13812,11 @@
   SET_FRAME_WIDTH (f, 0);
   change_frame_size (f, height, width, 1, 0, 0);
 
+  /* Add `tooltip' frame parameter's default value. */
+  if (NILP (Fframe_parameter (frame, intern ("tooltip"))))
+    Fmodify_frame_parameters (frame, Fcons (Fcons (intern ("tooltip"), Qt),
+					    Qnil));
+  
   /* Set up faces after all frame parameters are known.  This call
      also merges in face attributes specified for new frames.
 
--- a/src/xfns.c	Tue Oct 01 20:27:23 2002 +0000
+++ b/src/xfns.c	Wed Oct 02 08:28:17 2002 +0000
@@ -11143,7 +11143,12 @@
   f->height = 0;
   SET_FRAME_WIDTH (f, 0);
   change_frame_size (f, height, width, 1, 0, 0);
-
+  
+  /* Add `tooltip' frame parameter's default value. */
+  if (NILP (Fframe_parameter (frame, intern ("tooltip"))))
+    Fmodify_frame_parameters (frame, Fcons (Fcons (intern ("tooltip"), Qt),
+					    Qnil));
+  
   /* Set up faces after all frame parameters are known.  This call
      also merges in face attributes specified for new frames.