? patches
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/metacity/ChangeLog,v
retrieving revision 1.888
diff -p -u -r1.888 ChangeLog
--- ChangeLog	4 Oct 2004 21:09:08 -0000	1.888
+++ ChangeLog	4 Oct 2004 21:21:08 -0000
@@ -1,5 +1,12 @@
 2004-10-04  Elijah Newren  <newren@math.utah.edu>
 
+	* src/display.c (event_callback): if the root window gets focused,
+	set the focus to the default window; this fixes the
+	"focus-follows-mouse" behavior seen for click-to-focus mode after
+	cancelling log out (fixes #153220)
+
+2004-10-04  Elijah Newren  <newren@math.utah.edu>
+
 	Fix a variety of issues with autoraise (#134206)
 
 	* src/display.h: (struct _MetaDisplay): add an autoraise_window
Index: src/display.c
===================================================================
RCS file: /cvs/gnome/metacity/src/display.c,v
retrieving revision 1.233
diff -p -u -r1.233 display.c
--- src/display.c	4 Oct 2004 21:09:08 -0000	1.233
+++ src/display.c	4 Oct 2004 21:21:08 -0000
@@ -1829,6 +1829,9 @@ event_callback (XEvent   *event,
       else if (meta_display_screen_for_root (display,
                                              event->xany.window) != NULL)
         {
+          MetaScreen * screen;
+          screen = meta_display_screen_for_root (display, event->xany.window);
+
           meta_topic (META_DEBUG_FOCUS,
                       "Focus %s event received on root window 0x%lx "
                       "mode %s detail %s\n",
@@ -1842,15 +1845,20 @@ event_callback (XEvent   *event,
           if (event->type == FocusIn &&
               event->xfocus.detail == NotifyDetailNone)
             {
-              MetaScreen * screen;
-              screen = 
-                meta_display_screen_for_root (display, event->xany.window);
-
               meta_topic (META_DEBUG_FOCUS, 
                           "Focus got set to None, probably due to brain-damage in the X protocol (see bug 125492).  Setting the default focus window.\n");
 
               meta_workspace_focus_default_window (screen->active_workspace, NULL, meta_display_get_current_time_roundtrip (display));
             }
+          else if (event->type == FocusIn &&
+              event->xfocus.mode == NotifyNormal &&
+              event->xfocus.detail == NotifyInferior)
+            {
+              meta_topic (META_DEBUG_FOCUS,
+                          "Focus got set to root window, probably due to gnome-session logout dialog usage (see bug 153220).  Setting the default focus window.\n");
+              meta_workspace_focus_default_window (screen->active_workspace, NULL, meta_display_get_current_time_roundtrip (display));
+            }
+
         }
       break;
     case KeymapNotify:
