* frame.c (Vdelete_frame_functions): New variable.
authorJohn Paul Wallington <jpw@pobox.com>
Wed, 2 Oct 2002 08:28:17 +0000 (08:28 +0000)
committerJohn Paul Wallington <jpw@pobox.com>
Wed, 2 Oct 2002 08:28:17 +0000 (08:28 +0000)
(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.

src/ChangeLog
src/frame.c
src/macfns.c
src/w32fns.c
src/xfns.c

index 05d56cc..e7055f1 100644 (file)
@@ -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
index ffd0c5a..b8fb2e1 100644 (file)
@@ -80,6 +80,7 @@ Lisp_Object Vterminal_frame;
 Lisp_Object Vdefault_frame_alist;
 Lisp_Object Vmouse_position_function;
 Lisp_Object Vmouse_highlight;
+Lisp_Object Vdelete_frame_functions;
 \f
 static void
 set_menu_bar_lines_1 (window, n)
@@ -1092,8 +1093,9 @@ A frame may not be deleted if its minibuffer is used by other frames.
 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 @@ frame.  The hook is called with one argument FRAME.  */)
        }
     }
 
-  /* 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 @@ is over the clickable text.  However, the mouse shape still indicates
 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.
 
index 49e4aad..f1e42d1 100644 (file)
@@ -9471,6 +9471,11 @@ x_create_tip_frame (dpyinfo, parms)
   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;
 
index 574b321..2e0352a 100644 (file)
@@ -13812,6 +13812,11 @@ x_create_tip_frame (dpyinfo, parms, text)
   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.
 
index 2703565..c20c0d0 100644 (file)
@@ -11143,7 +11143,12 @@ x_create_tip_frame (dpyinfo, parms, text)
   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.