Since several month, awesome users have reported a bug with OpenOffice.org. When using OOo and clicking on a menu, or using the mouse wheel to read a document, the currently selected tag (desktop) will change automagically to another one.
I've digged into awesome and found that awesome received a _NET_CURRENT_DESKTOP request. As defined by EWMH, this kind of request are sent by a pager to change the active desktop.
That was weird. Nobody is using a pager here. So, I just kicked my gdb out, attached it to OOo, breaking on XSendEvent call. And I got it:
Breakpoint 1, XSendEvent (dpy=0x1a00080, w=483, propagate=0, event_mask=1572864, event=0x7fff1fd70d70) at ../../src/SendEvent.c:46 (gdb) bt #0 XSendEvent (dpy=0x1a00080, w=483, propagate=0, event_mask=1572864, event=0x7fff1fd70d70) at ../../src/SendEvent.c:46 #1 0x00007f8c0ab4193f in vcl_sal::WMAdaptor::switchToWorkArea () from /usr/lib/openoffice/basis3.0/program/libvclplug_genlx.so #2 0x00007f8c0aafdbd8 in X11SalFrame::Show () from /usr/lib/openoffice/basis3.0/program/libvclplug_genlx.so #3 0x00007f8c1378623c in Window::Show () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #4 0x00007f8c13785f40 in Window::Show () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #5 0x00007f8c1372cb54 in FloatingWindow::StartPopupMode () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #6 0x00007f8c1373c877 in ?? () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #7 0x00007f8c1373ccf2 in ?? () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #8 0x00007f8c1373ce84 in ?? () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #9 0x00007f8c13795e7f in ?? () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #10 0x00007f8c13797e74 in ?? () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #11 0x00007f8c13796748 in ?? () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #12 0x00007f8c0aafe6f8 in X11SalFrame::HandleMouseEvent () from /usr/lib/openoffice/basis3.0/program/libvclplug_genlx.so #13 0x00007f8c0ab040c2 in X11SalFrame::Dispatch () from /usr/lib/openoffice/basis3.0/program/libvclplug_genlx.so #14 0x00007f8c0ab31625 in SalX11Display::Yield () from /usr/lib/openoffice/basis3.0/program/libvclplug_genlx.so #15 0x00007f8c0ab356f3 in ?? () from /usr/lib/openoffice/basis3.0/program/libvclplug_genlx.so #16 0x00007f8c0ab2df1f in SalXLib::Yield () from /usr/lib/openoffice/basis3.0/program/libvclplug_genlx.so #17 0x00007f8c135b050e in Application::Yield () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #18 0x00007f8c135b0587 in Application::Execute () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #19 0x00007f8c17517e80 in ?? () from /usr/lib/openoffice/program/../basis-link/program/libsofficeapp.so #20 0x00007f8c135b4b24 in ?? () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #21 0x00007f8c135b4bc5 in SVMain () from /usr/lib/openoffice/program/../basis-link/program/libvcllx.so #22 0x00007f8c1754ca6c in soffice_main () from /usr/lib/openoffice/program/../basis-link/program/libsofficeapp.so #23 0x000000000040105b in main ()
I started digging more into the code, and this is what I finally found in salframe.cxx:
// #i45160# switch to desktop where a dialog with parent will appear
if( mpParent && mpParent->m_nWorkArea != m_nWorkArea )
GetDisplay()->getWMAdaptor()->switchToWorkArea(mpParent->m_nWorkArea );
Beautiful! It even has a comment with a IssueZilla bug number. Let's go and see where it comes from.
After 10 minutes of research to find that fucking IZ, I finally found the link to the issue #45160. The bug is IMHO not related to OOo but to a window manager doing poor job.
I've found that an awesome user already reported an bug… err, wait, I mean an issue as issue #96684 (remember there's no bug in OOo, only issues) and I commented about it.
It seems OOo developers have agreed to fix that bug eventually.