# HG changeset patch # User Chong Yidong # Date 1278088508 14400 # Node ID 1b5ca039f5f2e0f38b5ab663b5de977e3125e805 # Parent ef318d39a3e6399794e88c86ea945f8738b56f70 Fix faulty `if' statement in delete_frame. * frame.c (Qtooltip): New var. (delete_frame): Use it. Fix faulty if statement. Don't update mode line for tooltip frames. Suggested by Martin Rudalics. * xfns.c (x_create_tip_frame): * w32fns.c (x_create_tip_frame): Use it. diff -r ef318d39a3e6 -r 1b5ca039f5f2 src/ChangeLog --- a/src/ChangeLog Wed Jun 30 15:03:07 2010 -0700 +++ b/src/ChangeLog Fri Jul 02 12:35:08 2010 -0400 @@ -1,3 +1,12 @@ +2010-07-02 Chong Yidong + + * frame.c (Qtooltip): New var. + (delete_frame): Use it. Fix faulty if statement. Don't update + mode line for tooltip frames. Suggested by Martin Rudalics. + + * xfns.c (x_create_tip_frame): + * w32fns.c (x_create_tip_frame): Use it. + 2010-06-30 Naohiro Aota (tiny change) * xftfont.c (xftfont_open): Check font width one by one also when diff -r ef318d39a3e6 -r 1b5ca039f5f2 src/frame.c --- a/src/frame.c Wed Jun 30 15:03:07 2010 -0700 +++ b/src/frame.c Fri Jul 02 12:35:08 2010 -0400 @@ -100,6 +100,7 @@ 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; @@ -1329,7 +1330,7 @@ struct frame *sf = SELECTED_FRAME (); struct kboard *kb; - int minibuffer_selected; + int minibuffer_selected, tooltip_frame; if (EQ (frame, Qnil)) { @@ -1381,13 +1382,15 @@ } } + 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); @@ -1633,7 +1636,8 @@ } /* 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; } @@ -4451,6 +4455,8 @@ 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"); diff -r ef318d39a3e6 -r 1b5ca039f5f2 src/w32fns.c --- a/src/w32fns.c Wed Jun 30 15:03:07 2010 -0700 +++ b/src/w32fns.c Fri Jul 02 12:35:08 2010 -0400 @@ -5584,9 +5584,8 @@ 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)); + if (NILP (Fframe_parameter (frame, Qtooltip))) + Fmodify_frame_parameters (frame, Fcons (Fcons (Qtooltip, Qt), Qnil)); /* Set up faces after all frame parameters are known. This call also merges in face attributes specified for new frames. diff -r ef318d39a3e6 -r 1b5ca039f5f2 src/xfns.c --- a/src/xfns.c Wed Jun 30 15:03:07 2010 -0700 +++ b/src/xfns.c Fri Jul 02 12:35:08 2010 -0400 @@ -205,6 +205,8 @@ /* The below are defined in frame.c. */ +extern Lisp_Object Qtooltip; + #if GLYPH_DEBUG int image_cache_refcount, dpyinfo_refcount; #endif @@ -4914,9 +4916,8 @@ 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)); + if (NILP (Fframe_parameter (frame, Qtooltip))) + Fmodify_frame_parameters (frame, Fcons (Fcons (Qtooltip, Qt), Qnil)); /* FIXME - can this be done in a similar way to normal frames? http://lists.gnu.org/archive/html/emacs-devel/2007-10/msg00641.html */