1*4882a593SmuzhiyunFrom 61c1d48cd54903c4767cb2d5bd42cf04cb29127b Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Mon, 8 Jul 2019 14:54:25 +0800 4*4882a593SmuzhiyunSubject: [PATCH 3/3] Support move timeout when outline moving 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunMove the window after idling for 400ms in outline moving mode. 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 9*4882a593Smuzhiyun--- 10*4882a593Smuzhiyun openbox/moveresize.c | 24 ++++++++++++++++++++++++ 11*4882a593Smuzhiyun 1 file changed, 24 insertions(+) 12*4882a593Smuzhiyun 13*4882a593Smuzhiyundiff --git a/openbox/moveresize.c b/openbox/moveresize.c 14*4882a593Smuzhiyunindex 1db4726c..d75901e8 100644 15*4882a593Smuzhiyun--- a/openbox/moveresize.c 16*4882a593Smuzhiyun+++ b/openbox/moveresize.c 17*4882a593Smuzhiyun@@ -70,6 +70,7 @@ static guint sync_timer = 0; 18*4882a593Smuzhiyun #endif 19*4882a593Smuzhiyun static glong last_move_time = 0; 20*4882a593Smuzhiyun static guint move_timer = 0; 21*4882a593Smuzhiyun+static guint move_timeout_timer = 0; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun static GC outline_gc = NULL; 24*4882a593Smuzhiyun static gint outline_x = 0; 25*4882a593Smuzhiyun@@ -339,6 +340,8 @@ void moveresize_end(gboolean cancel) 26*4882a593Smuzhiyun } else { 27*4882a593Smuzhiyun if (move_timer) g_source_remove(move_timer); 28*4882a593Smuzhiyun move_timer = 0; 29*4882a593Smuzhiyun+ if (move_timeout_timer) g_source_remove(move_timeout_timer); 30*4882a593Smuzhiyun+ move_timeout_timer = 0; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun moveresize_clear_outline(); 33*4882a593Smuzhiyun } 34*4882a593Smuzhiyun@@ -475,6 +478,22 @@ static gboolean move_func(gpointer data) 35*4882a593Smuzhiyun return FALSE; /* don't repeat */ 36*4882a593Smuzhiyun } 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun+static gboolean move_timeout_func(gpointer data) 39*4882a593Smuzhiyun+{ 40*4882a593Smuzhiyun+ if (move_timer) g_source_remove(move_timer); 41*4882a593Smuzhiyun+ move_timer = 0; 42*4882a593Smuzhiyun+ 43*4882a593Smuzhiyun+ moveresize_clear_outline(); 44*4882a593Smuzhiyun+ client_configure(moveresize_client, cur_x, cur_y, cur_w, cur_h, 45*4882a593Smuzhiyun+ TRUE, FALSE, FALSE); 46*4882a593Smuzhiyun+ 47*4882a593Smuzhiyun+ popup_hide(popup); 48*4882a593Smuzhiyun+ popup->client = NULL; 49*4882a593Smuzhiyun+ 50*4882a593Smuzhiyun+ move_timeout_timer = 0; 51*4882a593Smuzhiyun+ return FALSE; /* don't repeat */ 52*4882a593Smuzhiyun+} 53*4882a593Smuzhiyun+ 54*4882a593Smuzhiyun static void do_move(gboolean keyboard, gint keydist) 55*4882a593Smuzhiyun { 56*4882a593Smuzhiyun gint resist; 57*4882a593Smuzhiyun@@ -504,6 +523,11 @@ static void do_move(gboolean keyboard, gint keydist) 58*4882a593Smuzhiyun last_move_time = next_ms; 59*4882a593Smuzhiyun } 60*4882a593Smuzhiyun } 61*4882a593Smuzhiyun+ 62*4882a593Smuzhiyun+ if (!config_resize_redraw) { 63*4882a593Smuzhiyun+ if (move_timeout_timer) g_source_remove(move_timeout_timer); 64*4882a593Smuzhiyun+ move_timeout_timer = g_timeout_add(400, move_timeout_func, NULL); 65*4882a593Smuzhiyun+ } 66*4882a593Smuzhiyun } 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun static void do_resize(void) 69*4882a593Smuzhiyun-- 70*4882a593Smuzhiyun2.17.1 71*4882a593Smuzhiyun 72