From ec21f8c9ec160466ba0a1aa662da8af5cb6a3c9b Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 14 May 2007 22:58:08 +0000 Subject: [PATCH] yay for simplifying code. if we check for errors we dont need the "focus_tried" stuff --- openbox/client.c | 37 +++------------------------------- openbox/client.h | 4 ---- openbox/focus.c | 52 +----------------------------------------------- 3 files changed, 4 insertions(+), 89 deletions(-) diff --git a/openbox/client.c b/openbox/client.c index 888e532b..e7711692 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -65,7 +65,6 @@ typedef struct GList *client_list = NULL; static GSList *client_destroy_notifies = NULL; -static GSList *client_hide_notifies = NULL; static void client_get_all(ObClient *self, gboolean real); static void client_toggle_border(ObClient *self, gboolean show); @@ -139,29 +138,6 @@ void client_remove_destroy_notify(ObClientCallback func) } } -void client_add_hide_notify(ObClientCallback func, gpointer data) -{ - ClientCallback *d = g_new(ClientCallback, 1); - d->func = func; - d->data = data; - client_hide_notifies = g_slist_prepend(client_hide_notifies, d); -} - -void client_remove_hide_notify(ObClientCallback func) -{ - GSList *it; - - for (it = client_hide_notifies; it; it = g_slist_next(it)) { - ClientCallback *d = it->data; - if (d->func == func) { - g_free(d); - client_hide_notifies = - g_slist_delete_link(client_hide_notifies, it); - break; - } - } -} - void client_set_list() { Window *windows, *win_it; @@ -2442,12 +2418,9 @@ void client_show(ObClient *self) void client_hide(ObClient *self) { - if (!client_should_show(self)) { + if (!client_should_show(self)) frame_hide(self->frame); - client_call_notifies(self, client_hide_notifies); - } - /* According to the ICCCM (sec 4.1.3.1) when a window is not visible, it needs to be in IconicState. This includes when it is on another desktop! @@ -2458,15 +2431,11 @@ void client_hide(ObClient *self) void client_showhide(ObClient *self) { - if (client_should_show(self)) { + if (client_should_show(self)) frame_show(self->frame); - } - else { + else frame_hide(self->frame); - client_call_notifies(self, client_hide_notifies); - } - /* According to the ICCCM (sec 4.1.3.1) when a window is not visible, it needs to be in IconicState. This includes when it is on another desktop! diff --git a/openbox/client.h b/openbox/client.h index c4815d4c..aaebceaa 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -314,10 +314,6 @@ typedef void (*ObClientCallback)(ObClient *client, gpointer data); void client_add_destroy_notify(ObClientCallback func, gpointer data); void client_remove_destroy_notify(ObClientCallback func); -/*! Get notified when the client is hidden */ -void client_add_hide_notify(ObClientCallback func, gpointer data); -void client_remove_hide_notify(ObClientCallback func); - /*! Manages all existing windows */ void client_manage_all(); /*! Manages a given window diff --git a/openbox/focus.c b/openbox/focus.c index 88ef0104..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,10 +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 */ - ob_debug_type(OB_DEBUG_FOCUS, "focus tried = NULL\n"); } static ObClient* focus_fallback_target(gboolean allow_refocus, ObClient *old) @@ -287,13 +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; - - ob_debug_type(OB_DEBUG_FOCUS, "focus tried = %s\n", new->title); - } return new; } @@ -313,9 +291,6 @@ void focus_nothing() focus_client = NULL; */ - focus_tried = NULL; /* focus isn't "trying" to go anywhere now */ - ob_debug_type(OB_DEBUG_FOCUS, "focus tried = NULL\n"); - /* 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 ! @@ -963,28 +938,3 @@ ObClient *focus_order_find_first(guint desktop) } return NULL; } - -static void focus_tried_hide_notify(ObClient *client, gpointer data) -{ - XEvent ce; - - ob_debug_type(OB_DEBUG_FOCUS, "checking focus tried (%s) against %s\n", - (focus_tried?focus_tried->title:"(null)"), client->title); - - 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); - } - } -} -- 2.39.2