X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Ffocus.c;h=7e1623bd61df8957cc94350cfff3f34462c10e6f;hb=f9fe78d970fa1ef62d56160db7a82fa6948643b6;hp=0c32df6cc2517f750b71555c977cbe52c0db956c;hpb=2676b61b0f4caa8639ce9509f00b0ea2773b731e;p=chaz%2Fopenbox diff --git a/openbox/focus.c b/openbox/focus.c index 0c32df6c..7e1623bd 100644 --- a/openbox/focus.c +++ b/openbox/focus.c @@ -44,14 +44,6 @@ ObClient *focus_client = NULL; GList *focus_order = NULL; ObClient *focus_cycle_target = NULL; -/*! This variable is used for focus fallback. If we fallback to a window, we - set this to the window. And when focus goes somewhere after that, it will - be set to NULL. If between falling back to that window and something - getting focused, the window gets unmanaged, then if there are no incoming - FocusIn events, we fallback again because focus has just gotten itself lost. - */ -static ObClient *focus_tried = NULL; - struct { InternalWindow top; InternalWindow left; @@ -69,7 +61,6 @@ static gboolean valid_focus_target(ObClient *ft, gboolean dock_windows, gboolean desktop_windows); static void focus_cycle_destroy_notify(ObClient *client, gpointer data); -static void focus_tried_hide_notify(ObClient *client, gpointer data); static Window createWindow(Window parent, gulong mask, XSetWindowAttributes *attrib) @@ -88,8 +79,6 @@ void focus_startup(gboolean reconfig) XSetWindowAttributes attr; client_add_destroy_notify(focus_cycle_destroy_notify, NULL); - client_add_destroy_notify(focus_tried_hide_notify, NULL); - client_add_hide_notify(focus_tried_hide_notify, NULL); /* start with nothing focused */ focus_nothing(); @@ -143,8 +132,6 @@ void focus_shutdown(gboolean reconfig) if (!reconfig) { client_remove_destroy_notify(focus_cycle_destroy_notify); - client_remove_destroy_notify(focus_tried_hide_notify); - client_remove_hide_notify(focus_tried_hide_notify); /* reset focus to root */ XSetInputFocus(ob_display, PointerRoot, RevertToNone, CurrentTime); @@ -198,9 +185,6 @@ void focus_set_client(ObClient *client) PROP_SET32(RootWindow(ob_display, ob_screen), net_active_window, window, active); } - - - focus_tried = NULL; /* focus isn't "trying" to go anywhere now */ } static ObClient* focus_fallback_target(gboolean allow_refocus, ObClient *old) @@ -286,11 +270,8 @@ ObClient* focus_fallback(gboolean allow_refocus) event at all for them. */ focus_nothing(); - if (new) { + if (new) client_focus(new); - /* remember that we tried to send focus here */ - focus_tried = new; - } return new; } @@ -310,8 +291,6 @@ void focus_nothing() focus_client = NULL; */ - focus_tried = NULL; /* focus isn't "trying" to go anywhere now */ - /* if there is a grab going on, then we need to cancel it. if we move focus during the grab, applications will get NotifyWhileGrabbed events and ignore them ! @@ -959,25 +938,3 @@ ObClient *focus_order_find_first(guint desktop) } return NULL; } - -static void focus_tried_hide_notify(ObClient *client, gpointer data) -{ - XEvent ce; - - if (client == focus_tried) { - /* we were trying to focus this window but it's gone */ - - focus_tried = NULL; - - ob_debug_type(OB_DEBUG_FOCUS, "Tried to focus window 0x%x and it " - "is being unmanaged:\n"); - if (XCheckIfEvent(ob_display, &ce, event_look_for_focusin_client,NULL)) - { - XPutBackEvent(ob_display, &ce); - ob_debug_type(OB_DEBUG_FOCUS, " but another FocusIn is coming\n"); - } else { - ob_debug_type(OB_DEBUG_FOCUS, " so falling back focus again.\n"); - focus_fallback(TRUE); - } - } -}