Subject: bug#27647: 26.0.50; Line numbers implemented natively disappear momentarily when frame out of focus

From: Romanos Skiadas <[email-masked]>
Date: Thu, 9 Nov 2017 18:14:30 +0000

Work for me, thanks everyone for figuring this out and fixing it.

Best,

Romanos

> I propose a slightly different patch below; could you try it?
>
> diff --git a/src/dispextern.h b/src/dispextern.h
> index 2f55d8c..430afbf 100644
> --- a/src/dispextern.h
> +++ b/src/dispextern.h
> @@ -3452,7 +3452,14 @@ void gamma_correct (struct frame *, COLORREF *);
>   void x_implicitly_set_name (struct frame *, Lisp_Object, Lisp_Object);
>   void x_change_tool_bar_height (struct frame *f, int);
>   
> +/* The frame used to display a tooltip.
> +
> +   Note: In a GTK build with non-zero x_gtk_use_system_tooltips, this
> +   variable holds the frame that shows the tooltip, not the frame of
> +   the tooltip itself, so checking whether a frame is a tooltip frame
> +   cannot just compare the frame to what this variable holds.  */
>   extern Lisp_Object tip_frame;
> +
>   extern Window tip_window;
>   extern frame_parm_handler x_frame_parm_handlers[];
>   
> diff --git a/src/xdisp.c b/src/xdisp.c
> index 69b74dc..d4a0261 100644
> --- a/src/xdisp.c
> +++ b/src/xdisp.c
> @@ -21126,7 +21126,13 @@ should_produce_line_number (struct it *it)
>   
>   #ifdef HAVE_WINDOW_SYSTEM
>     /* Don't display line number in tooltip frames.  */
> -  if (FRAMEP (tip_frame) && EQ (WINDOW_FRAME (it->w), tip_frame))
> +  if (FRAMEP (tip_frame) && EQ (WINDOW_FRAME (it->w), tip_frame)
> +#ifdef USE_GTK
> +      /* GTK builds store in tip_frame the frame that shows the tip,
> +	 so we need an additional test.  */
> +      && !NILP (Fframe_parameter (tip_frame, Qtooltip))
> +#endif
> +      )
>       return false;
>   #endif
>   
>
>
>