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:
parent
f4d29bb737
commit
0be1c1e8d7
2 changed files with 8 additions and 6 deletions
|
@ -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
|
// after the window is mapped, we need to start interactively moving it
|
||||||
if (initial && place_window &&
|
if (initial && place_window &&
|
||||||
screen->placementPolicy() == BScreen::ClickMousePlacement) {
|
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;
|
int x, y, rx, ry;
|
||||||
Window c, r;
|
Window c, r;
|
||||||
unsigned int m;
|
unsigned int m;
|
||||||
|
@ -2759,6 +2753,12 @@ void OpenboxWindow::buttonReleaseEvent(XButtonEvent *re) {
|
||||||
void OpenboxWindow::startMove(int x, int y) {
|
void OpenboxWindow::startMove(int x, int y) {
|
||||||
ASSERT(!flags.moving);
|
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 |
|
XGrabPointer(display, frame.window, False, PointerMotionMask |
|
||||||
ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
|
ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
|
||||||
None, openbox.getMoveCursor(), CurrentTime);
|
None, openbox.getMoveCursor(), CurrentTime);
|
||||||
|
|
|
@ -172,6 +172,8 @@ public:
|
||||||
inline const unsigned long &getCacheMax() const
|
inline const unsigned long &getCacheMax() const
|
||||||
{ return resource.cache_max; }
|
{ return resource.cache_max; }
|
||||||
|
|
||||||
|
inline OpenboxWindow *getMaskedWindow() const
|
||||||
|
{ return masked_window; }
|
||||||
inline void maskWindowEvents(Window w, OpenboxWindow *bw)
|
inline void maskWindowEvents(Window w, OpenboxWindow *bw)
|
||||||
{ masked = w; masked_window = bw; }
|
{ masked = w; masked_window = bw; }
|
||||||
inline void setNoFocus(Bool f) { no_focus = f; }
|
inline void setNoFocus(Bool f) { no_focus = f; }
|
||||||
|
|
Loading…
Reference in a new issue