(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-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
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)
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;
{
}
}
- /* 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);
}
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.
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;
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.
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.