(resend, CONTRIBUTING.md points to
http://www.vim.org/maillist.php#vim-dev but mail
to
vim...@vim.org apparently does not make it to the list)
Hi,
I'm suffering from an annoying issue with ballooneval as
used by the taglist plugin. When using gvim built with --enable-gui=gtk3
the balloon sometimes does not hide when the gvim window loses
focus, i.e. the ballon shows on top of other windows even
when gvim is completely hidden behind other windows, or even
when the gvim window is on a different virtual desktop.
This is not easy to reproduce at will, the ingredients to
reproduce it are awesome wm (
awesomewm.org) and multiple
gvim and xterm windows on multiple virtual desktops (awesome uses
a concept of tags to implement them). Awesome is a tiling wm but
I'm using floating window layout, i.e. like a non-tiling wm,
i.e. with overlapping windows. Then after some desktop and
window switching the issue usually appears. I have not found
any deterministic way to reproduce it, though.
The issue appears with gvim from Debian unstable's vim-gtk3 package
(there is no gtk2 version anymore in Debian unstable). It can be
reproduced with current git built with
"./configure --prefix=/usr --enable-gui=gtk3 --disable-xim".
I debugged it using the attached vim-gdk-event-debug.patch
and got this log:
Good case:
target_event_cb 3 00203f0e
pointer_event 27 0
Gdk-Message: 10:39:58.996: leave notify: window 71303175
subwindow:0
device: 2
source device: 9
notify type: 3
crossing mode: 0
target_event_cb 11 00203f0e
target_event_cb: GDK_LEAVE_NOTIFY 0
mainwin_event_cb 11 00437310
mainwin_event_cb: GDK_LEAVE_NOTIFY 0
Gdk-Message: 10:39:59.026: focus out: window: 71303175, detail: NotifyNonlinear, mode: NotifyNormal
Gdk-Message: 10:39:59.026: focus out: window: 71303175, detail: NotifyNonlinearVirtual, mode: NotifyNormal
mainwin_event_cb 12 00437310
mainwin_event_cb: GDK_FOCUS_CHANGE
Bad case:
target_event_cb 3 00203f0e
pointer_event 15 0
Gdk-Message: 10:41:33.068: leave notify: window 56623548
subwindow:0
device: 2
source device: 9
notify type: 3
crossing mode: 0
Gdk-Message: 10:41:33.068: leave notify: window 56623108
subwindow:0
device: 2
source device: 9
notify type: 4
crossing mode: 0
mainwin_event_cb 11 00437310
mainwin_event_cb: GDK_LEAVE_NOTIFY 0
mainwin_event_cb 11 00437310
mainwin_event_cb: GDK_LEAVE_NOTIFY 0
Gdk-Message: 10:41:33.087: focus out: window: 56623108, detail: NotifyNonlinear, mode: NotifyNormal
Gdk-Message: 10:41:33.087: focus out: window: 56623108, detail: NotifyNonlinearVirtual, mode: NotifyNormal
mainwin_event_cb 12 00437310
mainwin_event_cb: GDK_FOCUS_CHANGE
I have no clue about the root cause, I suppose it could be
an issue in gtk3 but this is out of scope for me to debug.
The attached gvim-beval-fix.patch fixes (or works around)
the issue for me.
FWIW, the relevant X11 spec for the events is:
https://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html#events:pointer_window
Best Regards,
Johannes