]> Dogcows Code - chaz/openbox/commitdiff
more fixes to keep the pointer stuff aligned when doing keyboard move/resize
authorDana Jansens <danakj@orodu.net>
Tue, 2 Sep 2003 19:59:33 +0000 (19:59 +0000)
committerDana Jansens <danakj@orodu.net>
Tue, 2 Sep 2003 19:59:33 +0000 (19:59 +0000)
openbox/moveresize.c

index ee6e000f51f2a56ce101a9174855a6d09e990d1a..b43aa57626b942629615643f6b125edb5e60386e 100644 (file)
@@ -317,6 +317,7 @@ void moveresize_event(XEvent *e)
                 start_y += dy - (cur_y - oy);
             } else if (corner == prop_atoms.net_wm_moveresize_move_keyboard) {
                 int dx = 0, dy = 0, ox = cur_x, oy = cur_y;
+                int opx, px, opy, py;
 
                 if (e->xkey.keycode == ob_keycode(OB_KEY_RIGHT))
                     dx = 4;
@@ -331,6 +332,7 @@ void moveresize_event(XEvent *e)
 
                 cur_x += dx;
                 cur_y += dy;
+                screen_pointer_pos(&opx, &opy);
                 XWarpPointer(ob_display, None, None, 0, 0, 0, 0, dx, dy);
                 /* steal the motion events this causes */
                 XSync(ob_display, FALSE);
@@ -338,6 +340,7 @@ void moveresize_event(XEvent *e)
                     XEvent ce;
                     while (XCheckTypedEvent(ob_display, MotionNotify, &ce));
                 }
+                screen_pointer_pos(&px, &py);
 
                 do_move(FALSE);
 
@@ -345,8 +348,8 @@ void moveresize_event(XEvent *e)
                    not nessesarily (resistance), this adjusts where the curor
                    thinks it started so that it keeps up with where the window
                    actually is */
-                start_x += dx - (cur_x - ox);
-                start_y += dy - (cur_y - oy);
+                start_x += (px - opx) - (cur_x - ox);
+                start_y += (py - opy) - (cur_y - oy);
             }
         }
     }
This page took 0.023426 seconds and 4 git commands to generate.