]> Dogcows Code - chaz/openbox/blobdiff - openbox/moveresize.c
Prevent screen edge warping from switching rapidly
[chaz/openbox] / openbox / moveresize.c
index 13f39df2a64b10092a99d7b85dd265541e54ba0f..d700da9ebd66a0ecacb8d10c4e15bc0a2b75c4f2 100644 (file)
@@ -21,6 +21,7 @@
 #include "framerender.h"
 #include "screen.h"
 #include "client.h"
+#include "focus.h"
 #include "frame.h"
 #include "openbox.h"
 #include "resist.h"
@@ -63,8 +64,8 @@ static ObDirection edge_warp_dir = -1;
 static gboolean edge_warp_odd = FALSE;
 static guint edge_warp_timer = 0;
 static ObDirection key_resize_edge = -1;
-#ifdef SYNC
 static guint waiting_for_sync;
+#ifdef SYNC
 static guint sync_timer = 0;
 #endif
 
@@ -262,6 +263,7 @@ void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr)
     cur_h = start_ch;
 
     moveresize_in_progress = TRUE;
+    waiting_for_sync = 0;
 
 #ifdef SYNC
     if (config_resize_redraw && !moving && obt_display_extension_sync &&
@@ -300,8 +302,6 @@ void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr)
                                             XSyncCADelta |
                                             XSyncCAEvents,
                                             &aa);
-
-        waiting_for_sync = 0;
     }
 #endif
 }
@@ -462,8 +462,6 @@ static gboolean sync_timeout_func(gpointer data)
     ++waiting_for_sync; /* we timed out waiting for our sync... */
     do_resize(); /* ...so let any pending resizes through */
 
-    XFlush(obt_display);
-
     if (waiting_for_sync > SYNC_TIMEOUTS) {
         sync_timer = 0;
         return FALSE; /* don't repeat */
@@ -585,16 +583,16 @@ static void edge_warp_move_ptr(void)
 
     switch (edge_warp_dir) {
        case OB_DIRECTION_NORTH:
-           y = a->height - 1;
+           y = a->height - 2;
            break;
        case OB_DIRECTION_EAST:
-           x = a->x;
+           x = a->x + 1;
            break;
        case OB_DIRECTION_SOUTH:
-           y = a->y;
+           y = a->y + 1;
            break;
        case OB_DIRECTION_WEST:
-           x = a->width - 1;
+           x = a->width - 2;
            break;
        default:
         g_assert_not_reached();
@@ -618,7 +616,6 @@ static gboolean edge_warp_delay_func(gpointer data)
     }
     edge_warp_odd = !edge_warp_odd;
 
-    XFlush(obt_display);
     return TRUE; /* do repeat ! */
 }
 
@@ -1087,5 +1084,9 @@ gboolean moveresize_event(XEvent *e)
         used = TRUE;
     }
 #endif
+
+    if (used && moveresize_client == focus_client)
+        event_update_user_time();
+
     return used;
 }
This page took 0.023159 seconds and 4 git commands to generate.