Subject: Tooltips with images

From: Andreas Matthias <[email-masked]>
Date: Wed, 8 Apr 2020 22:49:48 +0200

This bug report is probably related to #40047.

I experience some weird behavior with tooltips.

(progn
  (let* ((start (point))
         (end (progn (insert "test") (point)))
         (ov (make-overlay start end)))
    (overlay-put ov 'help-echo
                 (propertize "xxx" 'display '(image :type jpeg :file
"~/foo.jpg"))))
  (display-buffer-other-frame (get-buffer-create "dummy")))

After evaluating this code (Do not click anywhere, this is important.)
and moving the mouse pointer over "test" I get a tooltip displaying the
image file foo.jpg. The tooltip appears as a box with a light yellow
background color with sharp corners.

But the moment I click anywhere on the desktop (not necessarily on an
emacs frame) this tooltip changes it's appearance. Now
the tooltip contains no image but the text "xxx". Furthermore the tooltip
appears as a transparent black box with rounded corners.

I suppose that the first tooltip I'm seeing is an emacs-tooltip while
the second one is a gtk-tooltip.

The code line creating an empty buffer is important. Without this line I
never see the emacs-tooltip, but always the gtk-tooltip.

The tests were done with (setq x-gtk-use-system-tooltips t).

After setting (setq x-gtk-use-system-tooltips nil) the tooltip does not
change any more. Now I always get an emacs-tooltip.

In GNU Emacs 28.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.22.30,
cairo version 1.15.10)
 of 2020-03-17 built on phoenix
Repository revision: ac9acc1864b02b92de4eb2e98db7b5b0cd03e019
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Ubuntu 18.04.4 LTS

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Making completion list...
funcall-interactively: End of buffer [3 times]

Configured using:
 'configure --with-imagemagick'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO IMAGEMAGICK SOUND DBUS GSETTINGS GLIB
NOTIFY INOTIFY GNUTLS LIBXML2 FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 XDBE XIM MODULES THREADS PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
format-spec rfc822 mml easymenu mml-sec password-cache epa derived epg
epg-config gnus-util rmail rmail-loaddefs text-property-search time-date
subr-x seq byte-opt gv bytecomp byte-compile cconv mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core term/tty-colors frame minibuffer cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 44799 5180)
 (symbols 48 6297 1)
 (strings 32 15693 1667)
 (string-bytes 1 509547)
 (vectors 16 9297)
 (vector-slots 8 127644 10640)
 (floats 8 20 31)
 (intervals 56 194 0)
 (buffers 1000 12))