X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Feventdispatcher.cc;h=9e40947d019ed3d36009e75db678ba21b74c592e;hb=9e8f89b61976424c7d1c6e6a37498da74b7850ce;hp=d8bd539ce67ef31b134ce944e82c3807b048c3cd;hpb=8f8acc24933830d4f5784616b9b0c5896bde0b93;p=chaz%2Fopenbox diff --git a/otk/eventdispatcher.cc b/otk/eventdispatcher.cc index d8bd539c..9e40947d 100644 --- a/otk/eventdispatcher.cc +++ b/otk/eventdispatcher.cc @@ -38,8 +38,8 @@ void EventDispatcher::dispatchEvents(void) { XEvent e; - while (XPending(Display::display)) { - XNextEvent(Display::display, &e); + while (XPending(**display)) { + XNextEvent(**display, &e); #if 0//defined(DEBUG) printf("Event %d window %lx\n", e.type, e.xany.window); @@ -71,17 +71,17 @@ void EventDispatcher::dispatchEvents(void) case ButtonPress: case ButtonRelease: _lasttime = e.xbutton.time; - e.xbutton.state &= ~(LockMask | Display::numLockMask() | - Display::scrollLockMask()); + e.xbutton.state &= ~(LockMask | display->numLockMask() | + display->scrollLockMask()); break; case KeyPress: - e.xkey.state &= ~(LockMask | Display::numLockMask() | - Display::scrollLockMask()); + e.xkey.state &= ~(LockMask | display->numLockMask() | + display->scrollLockMask()); break; case MotionNotify: _lasttime = e.xmotion.time; - e.xmotion.state &= ~(LockMask | Display::numLockMask() | - Display::scrollLockMask()); + e.xmotion.state &= ~(LockMask | display->numLockMask() | + display->scrollLockMask()); break; case PropertyNotify: _lasttime = e.xproperty.time; @@ -99,6 +99,14 @@ void EventDispatcher::dispatchEvents(void) void EventDispatcher::dispatchFocus(const XEvent &e) { + // ignore focus changes from grabs + if (e.xfocus.mode == NotifyGrab) // || + // 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 + //e.xfocus.detail > NotifyNonlinearVirtual) + return; + if (e.type == FocusIn) { //printf("Got FocusIn!\n"); @@ -109,14 +117,10 @@ void EventDispatcher::dispatchFocus(const XEvent &e) } else if (e.type == FocusOut) { //printf("Got FocusOut!\n"); - // ignore FocusOut changes from grabs - if (e.xfocus.mode == NotifyGrab) - return; - // FocusOut events just make us look for FocusIn events. They are ignored // otherwise. XEvent fi; - if (XCheckTypedEvent(Display::display, FocusIn, &fi)) { + if (XCheckTypedEvent(**display, FocusIn, &fi)) { //printf("Found FocusIn\n"); dispatchFocus(fi); // dont unfocus the window we just focused! @@ -157,7 +161,7 @@ void EventDispatcher::dispatch(Window win, const XEvent &e) xwc.sibling = e.xconfigurerequest.above; xwc.stack_mode = e.xconfigurerequest.detail; - XConfigureWindow(otk::Display::display, e.xconfigurerequest.window, + XConfigureWindow(**display, e.xconfigurerequest.window, e.xconfigurerequest.value_mask, &xwc); } else { // grab a falback if it exists