aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2016-08-07 23:52:27 -0400
committerJustin M. Keyes <justinkz@gmail.com>2016-08-07 23:52:27 -0400
commit6da7d6890cc6e75a5477b0305d7c86501f960cf6 (patch)
tree6d3dcd1cfb7156397539069e9b4aa7c984fd121e /src
parent852ebc6f0bab4e08f99f08d279776194172a4fac (diff)
parentd69194ca8ca35a1f36d237a15d7b93b6b143327d (diff)
downloadrneovim-6da7d6890cc6e75a5477b0305d7c86501f960cf6.tar.gz
rneovim-6da7d6890cc6e75a5477b0305d7c86501f960cf6.tar.bz2
rneovim-6da7d6890cc6e75a5477b0305d7c86501f960cf6.zip
Merge #5025 'input.c: Restore double click'
Diffstat (limited to 'src')
-rw-r--r--src/nvim/os/input.c47
1 files changed, 25 insertions, 22 deletions
diff --git a/src/nvim/os/input.c b/src/nvim/os/input.c
index 0c46dc96ee..a4e01b18cd 100644
--- a/src/nvim/os/input.c
+++ b/src/nvim/os/input.c
@@ -266,29 +266,32 @@ static unsigned int handle_mouse_event(char **ptr, uint8_t *buf,
}
static int orig_num_clicks = 0;
- static int orig_mouse_code = 0;
- static int orig_mouse_col = 0;
- static int orig_mouse_row = 0;
- static uint64_t orig_mouse_time = 0; // time of previous mouse click
- uint64_t mouse_time = os_hrtime(); // time of current mouse click
-
- // compute the time elapsed since the previous mouse click and
- // convert p_mouse from ms to ns
- uint64_t timediff = mouse_time - orig_mouse_time;
- uint64_t mouset = (uint64_t)p_mouset * 1000000;
- if (mouse_code == orig_mouse_code
- && timediff < mouset
- && orig_num_clicks != 4
- && orig_mouse_col == mouse_col
- && orig_mouse_row == mouse_row) {
- orig_num_clicks++;
- } else {
- orig_num_clicks = 1;
+ if (mouse_code != KE_LEFTRELEASE && mouse_code != KE_RIGHTRELEASE
+ && mouse_code != KE_MIDDLERELEASE) {
+ static int orig_mouse_code = 0;
+ static int orig_mouse_col = 0;
+ static int orig_mouse_row = 0;
+ static uint64_t orig_mouse_time = 0; // time of previous mouse click
+ uint64_t mouse_time = os_hrtime(); // time of current mouse click (ns)
+
+ // compute the time elapsed since the previous mouse click and
+ // convert p_mouse from ms to ns
+ uint64_t timediff = mouse_time - orig_mouse_time;
+ uint64_t mouset = (uint64_t)p_mouset * 1000000;
+ if (mouse_code == orig_mouse_code
+ && timediff < mouset
+ && orig_num_clicks != 4
+ && orig_mouse_col == mouse_col
+ && orig_mouse_row == mouse_row) {
+ orig_num_clicks++;
+ } else {
+ orig_num_clicks = 1;
+ }
+ orig_mouse_code = mouse_code;
+ orig_mouse_col = mouse_col;
+ orig_mouse_row = mouse_row;
+ orig_mouse_time = mouse_time;
}
- orig_mouse_code = mouse_code;
- orig_mouse_col = mouse_col;
- orig_mouse_row = mouse_row;
- orig_mouse_time = mouse_time;
uint8_t modifiers = 0;
if (orig_num_clicks == 2) {