summaryrefslogtreecommitdiff
path: root/src/frame.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/frame.c b/src/frame.c
index 37d1579dd4d..5b0cfd13892 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -100,6 +100,7 @@ Lisp_Object Qgeometry; /* Not used */
Lisp_Object Qheight, Qwidth;
Lisp_Object Qleft, Qright;
Lisp_Object Qicon_left, Qicon_top, Qicon_type, Qicon_name;
+Lisp_Object Qtooltip;
Lisp_Object Qinternal_border_width;
Lisp_Object Qmouse_color;
Lisp_Object Qminibuffer;
@@ -1298,7 +1299,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
struct frame *sf = SELECTED_FRAME ();
struct kboard *kb;
- int minibuffer_selected;
+ int minibuffer_selected, tooltip_frame;
if (EQ (frame, Qnil))
{
@@ -1350,13 +1351,15 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
}
}
+ tooltip_frame = !NILP (Fframe_parameter (frame, intern ("tooltip")));
+
/* Run `delete-frame-functions' unless FORCE is `noelisp' or
frame is a tooltip. FORCE is set to `noelisp' when handling
a disconnect from the terminal, so we don't dare call Lisp
code. */
- if (NILP (Vrun_hooks) || !NILP (Fframe_parameter (frame, intern ("tooltip"))))
+ if (NILP (Vrun_hooks) || tooltip_frame)
;
- if (EQ (force, Qnoelisp))
+ else if (EQ (force, Qnoelisp))
pending_funcalls
= Fcons (list3 (Qrun_hook_with_args, Qdelete_frame_functions, frame),
pending_funcalls);
@@ -1602,7 +1605,8 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
}
/* Cause frame titles to update--necessary if we now have just one frame. */
- update_mode_lines = 1;
+ if (!tooltip_frame)
+ update_mode_lines = 1;
return Qnil;
}
@@ -4320,6 +4324,8 @@ syms_of_frame (void)
staticpro (&Qicon_left);
Qicon_top = intern_c_string ("icon-top");
staticpro (&Qicon_top);
+ Qtooltip = intern_c_string ("tooltip");
+ staticpro (&Qtooltip);
Qleft = intern_c_string ("left");
staticpro (&Qleft);
Qright = intern_c_string ("right");