diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-09-15 10:54:07 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-09-15 10:54:07 +0000 |
| commit | 4ccc4c5ed7d5cffc4bf733191f7bc30fbbf069c8 (patch) | |
| tree | c576a940be5853ac5ec9bde841f797d63e78061c /openbox/mainloop.c | |
| parent | 17676168255fcf5cbec9ea5dadcee546c5ab7bbb (diff) | |
break focus. or maybe make it better.
these changes make it work when you alt-tab off a fullscreen window, that it doesnt iconify, and that it is immediately restacked instead of waiting for a FocusIn event to arrive. The code now assumes that if the window says it can focus, that if we focus it, it is focused.
add the XDone handler to ObMainLoop, which is fired upon the occurance of there being no more X events to read.
Diffstat (limited to 'openbox/mainloop.c')
| -rw-r--r-- | openbox/mainloop.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/openbox/mainloop.c b/openbox/mainloop.c index 9ee20757..a50a48fb 100644 --- a/openbox/mainloop.c +++ b/openbox/mainloop.c @@ -1,4 +1,5 @@ #include "mainloop.h" +#include "focus.h" #include <stdio.h> #include <stdlib.h> @@ -99,6 +100,7 @@ struct _ObMainLoopXHandlerType ObMainLoop *loop; gpointer data; ObMainLoopXHandler func; + ObMainLoopXDoneHandler done_func; GDestroyNotify destroy; }; @@ -263,6 +265,12 @@ void ob_main_loop_run(ObMainLoop *loop) h->func(&e, h->data); } } while (XPending(loop->display)); + + for (it = loop->x_handlers; it; it = g_slist_next(it)) { + ObMainLoopXHandlerType *h = it->data; + if (h->done_func) + h->done_func(h->data); + } } else { /* this only runs if there were no x events received */ @@ -297,6 +305,7 @@ void ob_main_loop_exit(ObMainLoop *loop) void ob_main_loop_x_add(ObMainLoop *loop, ObMainLoopXHandler handler, + ObMainLoopXDoneHandler done_handler, gpointer data, GDestroyNotify notify) { @@ -305,6 +314,7 @@ void ob_main_loop_x_add(ObMainLoop *loop, h = g_new(ObMainLoopXHandlerType, 1); h->loop = loop; h->func = handler; + h->done_func = done_handler; h->data = data; h->destroy = notify; loop->x_handlers = g_slist_prepend(loop->x_handlers, h); |
