yay for simplifying code. if we check for errors we dont need the "focus_tried" stuff
Dana Jansens danakj@orodu.net
3 files changed,
4 insertions(+),
89 deletions(-)
M
openbox/client.c
→
openbox/client.c
@@ -65,7 +65,6 @@
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);@@ -134,29 +133,6 @@ if (d->func == func) {
g_free(d); client_destroy_notifies = g_slist_delete_link(client_destroy_notifies, it); - break; - } - } -} - -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; } }@@ -2442,11 +2418,8 @@ }
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@@ -2458,14 +2431,10 @@
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
M
openbox/client.h
→
openbox/client.h
@@ -314,10 +314,6 @@ /*! Get notified when the client is unmanaged */
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
M
openbox/focus.c
→
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 @@ gboolean all_desktops,
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 @@ if (!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 @@ icon_popup_free(focus_cycle_popup);
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 @@ active = client ? client->window : None;
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 @@ and such, and then when we try focus them, we won't get a FocusIn
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; }@@ -312,9 +290,6 @@ same window again, The focus code says nothing changed, but focus_client
ends up being NULL anyways. 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@@ -963,28 +938,3 @@ return c;
} 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); - } - } -}