when a window begins moving, make sure another window is not moving already, and if it is, end its move
Dana Jansens danakj@orodu.net
2 files changed,
8 insertions(+),
6 deletions(-)
M
src/Window.cc
→
src/Window.cc
@@ -1472,12 +1472,6 @@ // 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 (initial && place_window && 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;@@ -2759,6 +2753,12 @@
void OpenboxWindow::startMove(int x, int y) { ASSERT(!flags.moving); + // make sure only one window is moving at a time + OpenboxWindow *w; + if ((w = openbox.getMaskedWindow()) != (OpenboxWindow *) 0 && + w->flags.moving) + w->endMove(); + XGrabPointer(display, frame.window, False, PointerMotionMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, openbox.getMoveCursor(), CurrentTime);
M
src/openbox.h
→
src/openbox.h
@@ -172,6 +172,8 @@ { return resource.cache_life; }
inline const unsigned long &getCacheMax() const { return resource.cache_max; } + inline OpenboxWindow *getMaskedWindow() const + { return masked_window; } inline void maskWindowEvents(Window w, OpenboxWindow *bw) { masked = w; masked_window = bw; } inline void setNoFocus(Bool f) { no_focus = f; }