Bugzilla – Bug 4154
unity 2d menus misbehave with mouse pointer
Last modified: 2013-05-21 11:49:50
You need to
before you can comment on or make changes to this bug.
Ubuntu managed to make the menu bar in Unity 2D break with VNC some time
between 11.04 and 11.10. When you click a menu entry (or the widgets) it will
open on mouse press, but close again on mouse release. The expected behaviour
is to remain open after the mouse release.
The package is called unity-2d-panel and the version in 11.04 is
126.96.36.199-0ubuntu1 and the one in 11.10 is 4.12.0-0ubuntu1.1.
Also more here:
Test if it still is a bug in 12.04. File an upstream bug report if it is.
Also check if this occurs with an Ubuntu Xvnc and report it if it does.
See https://bugs.launchpad.net/ubuntu/+source/unity-2d/+bug/866046. FWIW.
The core of this issue seems to be XInput2 vs Core events. What I've determined
- Both working and non-working cases send a ButtonRelease/XI_ButtonRelease to
the GTK process. So Xorg and Xvnc both behave as expected.
- A GDK event is only generated with Xvnc (i.e. Core event), not with Xorg
It seems like the XInput2 event is lost inside XFilterEvent(). IOW, it seems
like a bug in Xlib/xcb.
Scratch that. gdb wasn't tracing properly. It is GDK that is filtering things
somewhere in gdk_event_apply_filters().
Lolbuntu's enterprise engineering strikes again!
Because of their quality architecture of having three processes to display a
single menu, the proper behaviour is the one we're seeing in VNC (the button is
released on the panel, which is technically outside the menu, so the menu
To work around this, they have some horrible kludges implemented as GDK event
filters. And last year some buffoon ripped out the X11 Core event code and
replaced it with XInput2 code. This with the fantastic commit message "Fix the
So either we grow XInput2 support, or Ubuntu fixes their shitty code. I don't
see anyway we can work around this.
Aaron gets the privilege to report this in Launchpad since he has an account.
The bug is in service/panel-service.c:event_filter(), and the issue is the lack
of support for X11 Core events.
We cannot do anything about this right now. Moving the bug to the next release
so we can keep track of upstream.
As a side note, besides adding yourself as a subscriber in launchpad, you
should click on "Affects me". The latter adds 4 points to the "heat", while
subscribing only adds 2 points.
Our new Xvnc has Xinput2 and does indeed solve this problem.
Works for me too.