diff --git a/ChangeLog b/ChangeLog index c8db6a9d6..4666cba3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-10-04 Elijah Newren + + * src/display.c (event_callback): When no window becomes focused, + focus the default window instead of punting to the + no_focus_window. Also, change the warning to a verbose + message--this will happen frequently due to brain-damage in the X + protocol. (see #125492) + 2004-10-04 Elijah Newren Fix a variety of focus race conditions in all focus modes, or at diff --git a/src/display.c b/src/display.c index 1214e8d47..ebf3065ad 100644 --- a/src/display.c +++ b/src/display.c @@ -1838,28 +1838,10 @@ event_callback (XEvent *event, if (event->type == FocusIn && event->xfocus.detail == NotifyDetailNone) { - XEvent property_event; + 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"); - /* FIXME _() gettextify on HEAD */ - meta_warning ("Working around an application which called XSetInputFocus (None) or with RevertToNone instead of RevertToPointerRoot, this is a minor bug in some application. If you can figure out which application causes this please report it as a bug against that application.\n"); - - /* Fix the problem */ - /* Using the property XA_PRIMARY because it's safe; - * nothing would use it as a property. The type - * doesn't matter. - */ - XChangeProperty (display->xdisplay, - display->leader_window, - XA_PRIMARY, XA_STRING, 8, - PropModeAppend, NULL, 0); - XWindowEvent (display->xdisplay, - display->leader_window, - PropertyChangeMask, - &property_event); - XSetInputFocus (display->xdisplay, - display->no_focus_window, - RevertToPointerRoot, - property_event.xproperty.time); + meta_workspace_focus_default_window (screen->active_workspace, NULL, meta_display_thou_shalt_return_a_timestamp (display)); } } break;