X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Feventdispatcher.cc;h=8c245ddeb3f00a24d517806ab82a8fbe46cc8b8f;hb=59ef3022a4ce0a23e6d54f7d73a2aa77721e9cc9;hp=9e40947d019ed3d36009e75db678ba21b74c592e;hpb=58ff3f35c2b712ec92b093ffd8b96331615f546a;p=chaz%2Fopenbox diff --git a/otk/eventdispatcher.cc b/otk/eventdispatcher.cc index 9e40947d..8c245dde 100644 --- a/otk/eventdispatcher.cc +++ b/otk/eventdispatcher.cc @@ -6,6 +6,13 @@ #include "eventdispatcher.hh" #include "display.hh" + +extern "C" { +#ifdef HAVE_STDIO_H +# include +#endif +} + #include namespace otk { @@ -89,6 +96,8 @@ void EventDispatcher::dispatchEvents(void) case EnterNotify: case LeaveNotify: _lasttime = e.xcrossing.time; + if (e.xcrossing.mode != NotifyNormal) + continue; // skip me! break; } @@ -99,8 +108,11 @@ void EventDispatcher::dispatchEvents(void) void EventDispatcher::dispatchFocus(const XEvent &e) { +// printf("focus %s detail %d -> 0x%lx\n", +// (e.xfocus.type == FocusIn ? "IN" : "OUT"), +// e.xfocus.detail, e.xfocus.window); // ignore focus changes from grabs - if (e.xfocus.mode == NotifyGrab) // || + if (e.xfocus.mode == NotifyGrab) //|| e.xfocus.mode == NotifyUngrab || // From Metacity, from WindowMaker, ignore all funky pointer root events // its commented out cuz I don't think we need this at all. If problems // arise we can look into it @@ -160,9 +172,17 @@ void EventDispatcher::dispatch(Window win, const XEvent &e) xwc.border_width = e.xconfigurerequest.border_width; xwc.sibling = e.xconfigurerequest.above; xwc.stack_mode = e.xconfigurerequest.detail; - + +#ifdef DEBUG + printf("Proxying configure event for 0x%lx\n", e.xconfigurerequest.window); +#endif + + // we are not to be held responsible if someone sends us an invalid + // request! + display->setIgnoreErrors(true); XConfigureWindow(**display, e.xconfigurerequest.window, e.xconfigurerequest.value_mask, &xwc); + display->setIgnoreErrors(false); } else { // grab a falback if it exists handler = _fallback;