X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2FWindow.cc;h=480526586a73557119de05b38d23b05e7ade9c55;hb=89563281384c34886fb12b169d1bdf8d293f0b48;hp=c8c3760b917c2efe8f9a547bb2eb914d8b74bc52;hpb=f4d29bb737631dfd085646283b7620ef863303bf;p=chaz%2Fopenbox diff --git a/src/Window.cc b/src/Window.cc index c8c3760b..48052658 100644 --- a/src/Window.cc +++ b/src/Window.cc @@ -1472,12 +1472,6 @@ void OpenboxWindow::deiconify(bool reassoc, bool raise, bool initial) { // 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; @@ -1533,6 +1527,9 @@ void OpenboxWindow::withdraw(void) { void OpenboxWindow::maximize(unsigned int button) { + if (flags.moving) + endMove(); + // handle case where menu is open then the max button is used instead if (windowmenu && windowmenu->isVisible()) windowmenu->hide(); @@ -2289,6 +2286,9 @@ void OpenboxWindow::unmapNotifyEvent(XUnmapEvent *ue) { openbox.grab(); if (! validateClient()) return; + if (flags.moving) + endMove(); + XChangeSaveSet(display, client.window, SetModeDelete); XSelectInput(display, client.window, NoEventMask); @@ -2324,6 +2324,8 @@ void OpenboxWindow::unmapNotifyEvent(XUnmapEvent *ue) { void OpenboxWindow::destroyNotifyEvent(XDestroyWindowEvent *de) { if (de->window == client.window) { + if (flags.moving) + endMove(); XUnmapWindow(display, frame.window); delete this; @@ -2759,6 +2761,11 @@ void OpenboxWindow::buttonReleaseEvent(XButtonEvent *re) { void OpenboxWindow::startMove(int x, int y) { ASSERT(!flags.moving); + // make sure only one window is moving at a time + OpenboxWindow *w = openbox.getMaskedWindow(); + if (w != (OpenboxWindow *) 0 && w->flags.moving) + w->endMove(); + XGrabPointer(display, frame.window, False, PointerMotionMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, openbox.getMoveCursor(), CurrentTime);