X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fblackbox.cc;h=ecf69651665c488ea929eedbc1d4d3211798edb3;hb=72a2e98738d87b89620bafd15141690aa4be8fab;hp=ed12c55948679bc4908e6441eb983d9cb5156580;hpb=f633c5f057f3f19df20a31ee4bb62f27902b7e74;p=chaz%2Fopenbox diff --git a/src/blackbox.cc b/src/blackbox.cc index ed12c559..ecf69651 100644 --- a/src/blackbox.cc +++ b/src/blackbox.cc @@ -574,6 +574,8 @@ void Blackbox::process_event(XEvent *e) { has moved to a known window. */ e->xfocus.window = None; + + no_focus = False; // focusing is back on } break; @@ -682,8 +684,10 @@ void Blackbox::process_event(XEvent *e) { if (win->isIconic()) win->deiconify(False, False); if (! win->isStuck() && - (win->getWorkspaceNumber() != screen->getCurrentWorkspaceID())) + (win->getWorkspaceNumber() != screen->getCurrentWorkspaceID())) { + no_focus = True; screen->changeWorkspaceID(win->getWorkspaceNumber()); + } if (win->isVisible() && win->setInputFocus()) { win->getScreen()->getWorkspace(win->getWorkspaceNumber())-> raiseWindow(win); @@ -904,6 +908,28 @@ void Blackbox::process_event(XEvent *e) { } } } + } else if (e->xclient.message_type == + xatom->getAtom(XAtom::openbox_show_root_menu) || + e->xclient.message_type == + xatom->getAtom(XAtom::openbox_show_workspace_menu)) { + // find the screen the mouse is on + int x, y; + ScreenList::iterator it, end = screenList.end(); + for (it = screenList.begin(); it != end; ++it) { + Window w; + int i; + unsigned int m; + if (XQueryPointer(getXDisplay(), (*it)->getRootWindow(), + &w, &w, &x, &y, &i, &i, &m)) + break; + } + if (it != end) { + if (e->xclient.message_type == + xatom->getAtom(XAtom::openbox_show_root_menu)) + (*it)->showRootMenu(x, y); + else + (*it)->showWorkspaceMenu(x, y); + } } } @@ -921,7 +947,7 @@ void Blackbox::process_event(XEvent *e) { XShapeEvent *shape_event = (XShapeEvent *) e; BlackboxWindow *win = searchWindow(e->xany.window); - if (win) + if (win && shape_event->kind == ShapeBounding) win->shapeEvent(shape_event); } #endif // SHAPE