all repos — openbox @ fa05df8b0c461aa37f5f9838bcfb3af6ef6b9955

openbox fork - make it a bit more like ryudo

make warping on screen edge keep firing if you don't move the mouse away from the edge (but it slows down after the first time)
Dana Jansens danakj@orodu.net
commit

fa05df8b0c461aa37f5f9838bcfb3af6ef6b9955

parent

6593261f30d611ff3b71abdb9fd043851fdd2ca9

1 files changed, 12 insertions(+), 6 deletions(-)

jump to
M openbox/moveresize.copenbox/moveresize.c

@@ -55,6 +55,7 @@ static gint cur_x, cur_y, cur_w, cur_h;

static guint button; static guint32 corner; static ObDirection edge_warp_dir = -1; +static gboolean edge_warp_odd = FALSE; static ObDirection key_resize_edge = -1; #ifdef SYNC static gboolean waiting_for_sync;

@@ -483,12 +484,15 @@ static gboolean edge_warp_delay_func(gpointer data)

{ guint d; - d = screen_find_desktop(screen_desktop, edge_warp_dir, TRUE, FALSE); - if (d != screen_desktop) screen_set_desktop(d, TRUE); + /* only fire every second time. so it's fast the first time, but slower + after that */ + if (edge_warp_odd) { + d = screen_find_desktop(screen_desktop, edge_warp_dir, TRUE, FALSE); + if (d != screen_desktop) screen_set_desktop(d, TRUE); + } + edge_warp_odd = !edge_warp_odd; - edge_warp_dir = -1; - - return FALSE; /* don't repeat */ + return TRUE; /* do repeat ! */ } static void do_edge_warp(gint x, gint y)

@@ -524,11 +528,13 @@

if (dir != edge_warp_dir) { if (dir == (ObDirection)-1) cancel_edge_warp(); - else + else { + edge_warp_odd = TRUE; /* switch on the first timeout */ ob_main_loop_timeout_add(ob_main_loop, config_mouse_screenedgetime * 1000, edge_warp_delay_func, NULL, NULL, NULL); + } edge_warp_dir = dir; } }