when a window begins moving, make sure another window is not moving already, and if it is, end its move

This commit is contained in:
Dana Jansens 2002-04-30 08:09:53 +00:00
parent f4d29bb737
commit 0be1c1e8d7
2 changed files with 8 additions and 6 deletions

View file

@ -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;
@ -2759,6 +2753,12 @@ 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;
if ((w = openbox.getMaskedWindow()) != (OpenboxWindow *) 0 &&
w->flags.moving)
w->endMove();
XGrabPointer(display, frame.window, False, PointerMotionMask |
ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
None, openbox.getMoveCursor(), CurrentTime);

View file

@ -172,6 +172,8 @@ public:
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; }