[Bug 28712] gdm loses focus when mouse pointer is outside window (when initially started)
Sebastien Bacher
seb128 at ubuntu.com
Sat Mar 18 14:07:55 UTC 2006
Public bug report changed:
https://launchpad.net/malone/bugs/28712
Comment:
Upstream comment:
"The problem with using gdm_wm_focus_new_windows is that this turns on the
focus_new_windows flag and this never gets turned off. You'll notice this is
normally only used when a pop-up is going to be displayed. Actually this seems
sort of broken to me. Do we want gdmlogin and gdmgreeter to always just make
focus go to the last window displayed? If so we could perhaps rip out all the
gdm_wm_focus_window calls and just put a single gdm_wm_focus_new_window (TRUE)
call in there.
But, this does seem strange. If you have a bit of time, I would appreciate if
you could look into this a bit furter so we could understand what is going on
here. Since these calls are after the gtk_widget_show_all and
gtk_widget_show_now calls, I'd expect that the window would be mapped. Also, I
notice that gui/gdmlogin.c has pretty much the same gdm_wm calls, but people
only seem to complain about this problem with gdmgreeter. Do you notice the
same problem in gdmlogin? I'm assuming you can also debug the gdmwm code and
see if the window is also unmapped there when the gdm_wm_focus_window call is
made? If we see the problem in both programs, then I'd be happier fixing the
code as you suggest in your patch.
When you say the window is unmapped do you mean it isn't drawn to the screen or
the gdmwm code doesn't seem to know about the window yet? Note that
gdm_wm_init calls add_all_current_windows() and this should notice the window,
and add it to the list. If this is failing, then perhaps there is a race
condition where the window's MapNotify event is happening after the call to
gdm_wm_focus_window. You could probably test this by putting a breakpoint in
the event_process function and see if the code has already passed the
gdm_wm_focus_window function by this time. If this is the problem, I'd lean
towards just setting focus_new_windows to TRUE all the time, because I'm not
sure how we could better manage the race condition. It would seem weird to
make gdmgreeter wait for the MapWindow call before callng gdm_wm_focus_window."
More information about the desktop-bugs
mailing list