all repos — openbox @ ec21f8c9ec160466ba0a1aa662da8af5cb6a3c9b

openbox fork - make it a bit more like ryudo

yay for simplifying code. if we check for errors we dont need the "focus_tried" stuff
Dana Jansens danakj@orodu.net
commit

ec21f8c9ec160466ba0a1aa662da8af5cb6a3c9b

parent

1b2c6f609d202cc7d16d11cf06244c00b670a291

3 files changed, 4 insertions(+), 89 deletions(-)

jump to
M openbox/client.copenbox/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.hopenbox/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.copenbox/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); - } - } -}