]> Dogcows Code - chaz/openbox/blobdiff - scripts/motion.py
dont snap back, properly
[chaz/openbox] / scripts / motion.py
index 3d6937813ddff9ce9973058624d45ba5d61bb319..a6602e2d0b04683663b516eaed5975af1596f446 100644 (file)
@@ -86,6 +86,9 @@ def _motion_grab(data):
             else:
                 raise RuntimeError
 
+_last_x = 0
+_last_y = 0
+
 def _do_move():
     global _screen, _client, _cx, _cy, _dx, _dy
 
@@ -93,6 +96,7 @@ def _do_move():
     y = _cy + _dy
 
     global edge_resistance
+    global _last_x, _last_y
     if edge_resistance:
         fs = _client.frame.size()
         w = _client.area().width() + fs.left + fs.right
@@ -100,22 +104,30 @@ def _do_move():
         # use the area based on the struts
         area = ob.openbox.screen(_screen).area()
         l = area.left()
-        r = area.right() - w
+        r = area.right() - w + 1
         t = area.top()
-        b = area.bottom() - h
+        b = area.bottom() - h + 1
         # left screen edge
-        if x < l and x >= l - edge_resistance:
+        if _last_x > x and x < l and x >= l - edge_resistance:
             x = l
         # right screen edge
-        if x > r and x <= r + edge_resistance:
+        if _last_x < x and x > r and x <= r + edge_resistance:
             x = r
         # top screen edge
-        if y < t and y >= t - edge_resistance:
+        if _last_y > y and y < t and y >= t - edge_resistance:
             y = t
         # right screen edge
-        if y > b and y <= b + edge_resistance:
+        if _last_y < y and y > b and y <= b + edge_resistance:
             y = b
 
+    global _inmove
+    if not _inmove:
+        _last_x = 0
+        _last_y = 0
+    else:
+        _last_x = x
+        _last_y = y
+
     global move_rubberband
     if move_rubberband:
         # draw the outline ...
This page took 0.022885 seconds and 4 git commands to generate.