I decided to investigate this problem and checked out the source code.
After a lot of debugging I found out that the call to focus the wrong
window is coming from compiz CompScreenImpl::focusDefaultWindow which
comes from this code on compiz event.cpp :

                else if (event->xfocus.window == privateScreen.rootWindow())
                {
                    /* Don't ever let the focus go to the root
                     * window except in grab cases
                     *
                     * FIXME: There might be a case where we have to
                     * handle root windows of other screens here, but
                     * the other window managers should handle that
                     */

                    if (event->xfocus.detail == NotifyDetailNone ||
                        (event->xfocus.mode == NotifyNormal &&
                         event->xfocus.detail == NotifyInferior))
                    {
                        privateScreen.orphanData.activeWindow = None;

                        if (event->xfocus.detail == NotifyDetailNone ||
                            (event->xfocus.mode == NotifyNormal &&
                             event->xfocus.detail == NotifyInferior))
                        {
                            screen->focusDefaultWindow ();
                        }
                    }
                }

The FIXME comment is very suspicious but I have no idea what would be the 
solution.
I'm adding an attachment file with the stacktrace.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1459671

Title:
  focus goes to the wrong window after a modal dialog is closed

To manage notifications about this bug go to:
https://bugs.launchpad.net/unity/+bug/1459671/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to