all repos — openbox @ 9bd60fd92b8ff09630b35973947493a23015c621

openbox fork - make it a bit more like ryudo

dont queue up interative end actions
Dana Jansens danakj@orodu.net
commit

9bd60fd92b8ff09630b35973947493a23015c621

parent

4ea5a21fe1e5b95becb36194adb3add9858d5f23

4 files changed, 37 insertions(+), 13 deletions(-)

jump to
M openbox/action.copenbox/action.c

@@ -949,7 +949,11 @@ if (!(cancel || done))

keyboard_interactive_grab(state, a->data.any.c, a); } - ob_main_loop_queue_action(ob_main_loop, a); + /* closing interactive actions are not queued */ + if (!done) + ob_main_loop_queue_action(ob_main_loop, a); + else + a->func(&a->data); } } }
M openbox/event.copenbox/event.c

@@ -393,21 +393,21 @@ return;

/* deal with it in the kernel */ if (group) - event_handle_group(group, e); + event_handle_group(group, e); else if (client) - event_handle_client(client, e); + event_handle_client(client, e); else if (dockapp) - event_handle_dockapp(dockapp, e); + event_handle_dockapp(dockapp, e); else if (dock) - event_handle_dock(dock, e); + event_handle_dock(dock, e); else if (window == RootWindow(ob_display, ob_screen)) - event_handle_root(e); + event_handle_root(e); else if (e->type == MapRequest) - client_manage(window); + client_manage(window); else if (e->type == ConfigureRequest) { - /* unhandled configure requests must be used to configure the - window directly */ - XWindowChanges xwc; + /* unhandled configure requests must be used to configure the + window directly */ + XWindowChanges xwc; xwc.x = e->xconfigurerequest.x; xwc.y = e->xconfigurerequest.y;

@@ -531,6 +531,7 @@ ob_main_loop_timeout_add(ob_main_loop,

config_focus_delay, focus_delay_func, client, NULL); + ob_debug("added focus timeout\n"); } else focus_delay_func(client); }

@@ -679,10 +680,11 @@ #endif

} else { #ifdef DEBUG_FOCUS ob_debug("%sNotify mode %d detail %d on %lx, " - "focusing window\n", + "focusing window: %d\n", (e->type == EnterNotify ? "Enter" : "Leave"), e->xcrossing.mode, - e->xcrossing.detail, client?client->window:0); + e->xcrossing.detail, (client?client->window:0), + !nofocus); #endif if (!nofocus && config_focus_follow) event_enter_client(client);

@@ -1175,6 +1177,7 @@ static gboolean focus_delay_func(gpointer data)

{ ObClient *c = data; + ob_debug("focus timeout %d\n", focus_client != c); if (focus_client != c) { client_focus(c); if (config_focus_raise)

@@ -1195,12 +1198,23 @@ XEvent *e;

XSync(ob_display, FALSE); + ob_debug("Trying to ignore\n"); + /* count the events */ while (TRUE) { e = g_new(XEvent, 1); if (XCheckTypedEvent(ob_display, EnterNotify, e)) { + ObWindow *win; + + win = g_hash_table_lookup(window_map, &e->xany.window); + if (win && WINDOW_IS_CLIENT(win)) { + ob_debug("skipping enter event on 0x%lx\n", e->xany.window); + ++ignore_enter_focus; + } else + ob_debug("NOT skipping enter event on 0x%lx\n", + e->xany.window); + saved = g_slist_append(saved, e); - ++ignore_enter_focus; } else { g_free(e); break;
M openbox/grab.copenbox/grab.c

@@ -77,6 +77,7 @@ ret = XGrabPointer(ob_display, screen_support_win,

False, GRAB_PTR_MASK, GrabModeAsync, GrabModeAsync, FALSE, ob_cursor(cur), event_lasttime) == Success; + ob_debug("GRABBING\n"); if (!ret) --pgrabs; } else

@@ -84,6 +85,9 @@ ret = TRUE;

} else if (pgrabs > 0) { if (--pgrabs == 0) { XUngrabPointer(ob_display, event_lasttime); + + ob_debug("UNGRABBING\n"); + event_ignore_queued_enters(); } ret = TRUE; }
M openbox/openbox.copenbox/openbox.c

@@ -100,6 +100,8 @@ bind_textdomain_codeset(PACKAGE_NAME, "UTF-8");

textdomain(PACKAGE_NAME); g_set_prgname(argv[0]); + + chdir(g_get_home_dir()); parse_paths_startup();