Bug#496632: It's neither gtk_window_present, nor the urgency hint; it's a RIDDLE!

martin f krafft madduck at madduck.net
Tue Mar 16 09:04:16 GMT 2010


After reading what James wrote[0], I went to investigate this a bit.

0. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=486570#15

First, I found the single call to gtk_window_present in the Firefox
source and disabled it:

  --- a/widget/src/gtk2/nsWindow.cpp
  +++ b/widget/src/gtk2/nsWindow.cpp
  @@ -1406,7 +1406,7 @@ nsWindow::SetFocus(PRBool aRaise)
          owningWindow->mContainerBlockFocus = PR_TRUE;

          // Set focus to the window
  -        if (gRaiseWindows && aRaise && toplevelWidget &&
  +        if (0 && gRaiseWindows && aRaise && toplevelWidget &&
              !GTK_WIDGET_HAS_FOCUS(toplevelWidget) &&
              owningWindow->mIsShown && GTK_IS_WINDOW(owningWindow->mShell))
            gtk_window_present(GTK_WINDOW(owningWindow->mShell));

and built new packages, but the problem remained. However, I found
a couple of curiousities. I have three heads one two graphics cards,
and I use Zaphod mode to put them all next to each other. head 0 is
on GPU 0, and heads 1&2 are on GPU 1.

  1. the focus is never stolen when the Firefox window is on heads
     1&2, not even if the link is clicked on another head.

  2. if I move the window from head 0 to head 1 and back, then it no
     longer steals focus, not even if the click is on a separate head.

  3. if I move the window from head 0 to head 1, click a link, and
     move it back to head 0, then the focus stealing happens again.

I then went back to investigate these three points with the original
Firefox packages, i.e. without the above patch, and the behaviour is
identical.

Then I investigated the urgency hint, using xprop -spy: I started it
in a terminal, then X-pasted a link into that terminal and clicked
it. I did this to avoid changing focus with the mouse while testing.
There was nothing in the output of xprop -spy mentioning an urgency
hint. I did verify that xprop -spy shows the urgency hint, using
URxvt.urgentOnBell and echo -e '\a'.

This is starting to feel a bit like a riddle. For me, (2.) above is
an okay workaround at the moment, but it really seems like the
Firefox code needs some cleaning.

-- 
martin | http://madduck.net/ | http://two.sentenc.es/
 
"no work of art ever puts forward views.
 views belong to people
 who are not artists."
                                                        -- oscar wilde
 
spamtraps: madduck.bogus at madduck.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature (see http://martin-krafft.net/gpg/)
Url : https://lists.ubuntu.com/archives/ubuntu-mozillateam/attachments/20100316/1587820e/attachment.pgp 


More information about the Ubuntu-mozillateam mailing list