X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fblackbox.cc;h=0e03e17817ebc9289f31b5d89bb8a95a92ad10da;hb=39bd954b8bf197fa08f73ffade953fe531463796;hp=eec3a2f3901423f93bcf87ef05dfda42bb04f7fe;hpb=47585423c6494391db0425f2237890e82f1b031a;p=chaz%2Fopenbox diff --git a/src/blackbox.cc b/src/blackbox.cc index eec3a2f3..0e03e178 100644 --- a/src/blackbox.cc +++ b/src/blackbox.cc @@ -282,16 +282,6 @@ void Blackbox::process_event(XEvent *e) { } case ConfigureRequest: { - // compress configure requests... - XEvent realevent; - unsigned int i = 0; - while(XCheckTypedWindowEvent(getXDisplay(), e->xconfigurerequest.window, - ConfigureRequest, &realevent)) { - i++; - } - if ( i > 0 ) - e = &realevent; - BlackboxWindow *win = (BlackboxWindow *) 0; Slit *slit = (Slit *) 0; @@ -338,7 +328,8 @@ void Blackbox::process_event(XEvent *e) { focus = True; } - if (focus && (win->isTransient() || win->getScreen()->doFocusNew())) + if (focus && (win->isTransient() || win->getScreen()->doFocusNew()) && + win->isVisible()) win->setInputFocus(); } else { BScreen *screen = searchScreen(e->xmaprequest.parent); @@ -439,8 +430,12 @@ void Blackbox::process_event(XEvent *e) { if ( i > 0 ) e = &realevent; + // the pointer is on the wrong screen + if (! e->xmotion.same_screen) + break; + // strip the lock key modifiers - e->xbutton.state &= ~(NumLockMask | ScrollLockMask | LockMask); + e->xmotion.state &= ~(NumLockMask | ScrollLockMask | LockMask); last_time = e->xmotion.time; @@ -492,7 +487,7 @@ void Blackbox::process_event(XEvent *e) { if (win->getScreen()->isSloppyFocus() && (! win->isFocused()) && (! no_focus) && win->isNormal()) { // don't focus non-normal windows with mouseover - if (((! sa.leave) || sa.inferior) && win->isVisible()) { + if ((! sa.leave || sa.inferior) && win->isVisible()) { if (win->setInputFocus()) win->installColormap(True); // XXX: shouldnt we honour no install? } @@ -718,9 +713,8 @@ void Blackbox::process_event(XEvent *e) { if (win->isIconic()) win->deiconify(False, True); - if (win->isShaded()) - win->shade(); - if (win->getWorkspaceNumber() != screen->getCurrentWorkspaceID()) + if (! win->isStuck() && + (win->getWorkspaceNumber() != screen->getCurrentWorkspaceID())) screen->changeWorkspaceID(win->getWorkspaceNumber()); if (win->isVisible() && win->setInputFocus()) { win->getScreen()->getWorkspace(win->getWorkspaceNumber())->