all repos — openbox @ 4852193a578ea3c33f8685fd87322503c28e5544

openbox fork - make it a bit more like ryudo

properly handle placing a window while another window is still placing.
Dana Jansens danakj@orodu.net
commit

4852193a578ea3c33f8685fd87322503c28e5544

parent

1789f16af9d853e3961cbb7c0c753e0e12263969

2 files changed, 21 insertions(+), 12 deletions(-)

jump to
M src/Window.ccsrc/Window.cc

@@ -1465,6 +1465,24 @@

XMapSubwindows(display, frame.window); XMapWindow(display, frame.window); + // if we're using the click to place placement type, then immediately + // after the window is mapped, we need to start interactively moving it + if (!(flags.iconic || reassoc) && + screen->placementPolicy() == BScreen::ClickMousePlacement) { + // if the last window wasn't placed yet, or we're just moving a window + // already, finish off that move cleanly + OpenboxWindow *w = openbox.getFocusedWindow(); + if (w != (OpenboxWindow *) 0 && w->flags.moving) + w->endMove(); + + int x, y, rx, ry; + Window c, r; + unsigned int m; + XQueryPointer(openbox.getXDisplay(), screen->getRootWindow(), + &r, &c, &rx, &ry, &x, &y, &m); + startMove(rx, ry); + } + if (flags.iconic && screen->focusNew()) setInputFocus(); flags.visible = True;

@@ -1725,6 +1743,7 @@ }

if (screen->sloppyFocus() && screen->autoRaise() && timer->isTiming()) timer->stop(); + }
M src/openbox.ccsrc/openbox.cc

@@ -479,19 +479,9 @@

if (! win) win = new OpenboxWindow(*this, e->xmaprequest.window); - if ((win = searchWindow(e->xmaprequest.window))) { + if ((win = searchWindow(e->xmaprequest.window))) win->mapRequestEvent(&e->xmaprequest); - // if we're using the click to place placement type, then immediately - // after the window is mapped, we need to start interactively moving it - if (win->getScreen()->placementPolicy() == BScreen::ClickMousePlacement) { - int x, y, rx, ry; - Window c, r; - unsigned int m; - XQueryPointer(getXDisplay(), win->getScreen()->getRootWindow(), - &r, &c, &rx, &ry, &x, &y, &m); - win->startMove(rx, ry); - } - } + break; }