]> Dogcows Code - chaz/openbox/blobdiff - src/Window.cc
if user is moving a window and switches workspaces, stop moving that window
[chaz/openbox] / src / Window.cc
index 51e2b41b2be51407796714480b4085af7b0654ab..7ce182dcb409e8a04b1da86916d66ddbadb4516f 100644 (file)
@@ -1494,6 +1494,9 @@ void OpenboxWindow::close(void) {
 
 
 void OpenboxWindow::withdraw(void) {
+  if (flags.moving)
+    endMove();
+
   flags.visible = False;
   flags.iconic = False;
 
@@ -2732,7 +2735,7 @@ void OpenboxWindow::buttonReleaseEvent(XButtonEvent *re) {
 void OpenboxWindow::startMove(int x, int y) {
   ASSERT(!flags.moving);
 
-  XGrabPointer(display, frame.window, False, Button1MotionMask |
+  XGrabPointer(display, frame.window, False, PointerMotionMask |
                ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
                None, openbox.getMoveCursor(), CurrentTime);
 
@@ -2853,14 +2856,13 @@ void OpenboxWindow::endMove() {
 
 
 void OpenboxWindow::motionNotifyEvent(XMotionEvent *me) {
-  if (!flags.resizing && (me->state & Button1Mask) && functions.move &&
-      (frame.title == me->window || frame.label == me->window ||
-       frame.handle == me->window || frame.window == me->window)) {
-    if (!flags.moving)
-      startMove(me->x_root, me->y_root);
-    else
+  if (flags.moving)
       doMove(me->x_root, me->y_root);
-  } else if (functions.resize &&
+  else if (!flags.resizing && (me->state & Button1Mask) && functions.move &&
+      (frame.title == me->window || frame.label == me->window ||
+       frame.handle == me->window || frame.window == me->window))
+    startMove(me->x_root, me->y_root);
+  else if (functions.resize &&
             (((me->state & Button1Mask) && (me->window == frame.right_grip ||
                                             me->window == frame.left_grip)) ||
              (me->state & (Mod1Mask | Button3Mask) &&
This page took 0.020524 seconds and 4 git commands to generate.