Subject: Re: bug#24899: 25.1; x-hide-tip always returns nil with USE_GTK

From: Eli Zaretskii <[email-masked]>
Date: Tue, 08 Nov 2016 17:18:35 +0200

> Date: Tue, 08 Nov 2016 08:23:08 +0100
> From: martin rudalics <[email-masked]>
> 
> Thanks for the report.  I think that before investigating this further
> we need another recipe.  Yours is based on ‘pos-tip-show’ which is not
> part of Emacs.  Does ‘pos-tip-show’ use GTK+ tooltips or the native
> Emacs ones - what is your value of ‘x-gtk-use-system-tooltips’?
> 
> Then we would have to decide how to retrieve a non-nil return value for
> ‘x-hide-tip’ in the first place.  Here the tooltip disappears
> immediately when I type anything, so the return value is always nil by
> force, presumably.  We'd probably need a timer to test your function.
> 
> Finally, we would have to check the results for the function you get
> this way for both ‘x-gtk-use-system-tooltips’ nil/t settings and for at
> least one other toolkit.
> 
> Can you please try doing all that?

Martin, did you try this on master or on the emacs-25 branch?  I think
there's an omission in the Emacs 25.1 code, which the OP is running,
that is already fixed on master.  For emacs-25, the following patch
should at least bring you closer to the solution, if not be the
solution:

diff --git a/src/xfns.c b/src/xfns.c
index 7c1bb1c..a6d8980 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -6120,7 +6120,10 @@ Value is t if tooltip was open, nil otherwise.  */)
        the tip is shown.  */
     struct frame *f = XFRAME (frame);
     if (FRAME_LIVE_P (f) && xg_hide_tooltip (f))
-      frame = Qnil;
+      {
+	frame = Qnil;
+	deleted = Qt;
+      }
   }
 #endif