From 3208cb35e9e9cb34f1a3c62c07ca0a174863d27f Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sun, 27 Sep 2009 04:40:41 +0000 Subject: [PATCH] (make_lispy_event): Remember last wheel direction. (syms_of_keyboard) : Compute array size at compile time. --- src/ChangeLog | 5 +++++ src/keyboard.c | 53 +++++++++++++++++++++++++------------------------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index a5c15250948..1f485031ed4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2009-09-27 YAMAMOTO Mitsuharu + + * keyboard.c (make_lispy_event): Remember last wheel direction. + (syms_of_keyboard) : Compute array size at compile time. + 2009-09-26 Glenn Morris * Makefile.in (MSDOS_SUPPORT) [MSDOS]: Remove unneeded '/' in diff --git a/src/keyboard.c b/src/keyboard.c index 35c338cc74c..396f22fa7a1 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -5953,6 +5953,7 @@ make_lispy_event (event) as a multiple of 1/8 characters. */ struct frame *f; int fuzz; + int symbol_num; int is_double; if (WINDOWP (event->frame_or_window)) @@ -5967,7 +5968,27 @@ make_lispy_event (event) else fuzz = double_click_fuzz / 8; - is_double = (last_mouse_button < 0 + if (event->modifiers & up_modifier) + { + /* Emit a wheel-up event. */ + event->modifiers &= ~up_modifier; + symbol_num = 0; + } + else if (event->modifiers & down_modifier) + { + /* Emit a wheel-down event. */ + event->modifiers &= ~down_modifier; + symbol_num = 1; + } + else + /* Every wheel event should either have the down_modifier or + the up_modifier set. */ + abort (); + + if (event->kind == HORIZ_WHEEL_EVENT) + symbol_num += 2; + + is_double = (last_mouse_button == - (1 + symbol_num) && (eabs (XINT (event->x) - last_mouse_x) <= fuzz) && (eabs (XINT (event->y) - last_mouse_y) <= fuzz) && button_down_time != 0 @@ -5990,33 +6011,9 @@ make_lispy_event (event) button_down_time = event->timestamp; /* Use a negative value to distinguish wheel from mouse button. */ - last_mouse_button = -1; + last_mouse_button = - (1 + symbol_num); last_mouse_x = XINT (event->x); last_mouse_y = XINT (event->y); - } - - { - int symbol_num; - - if (event->modifiers & up_modifier) - { - /* Emit a wheel-up event. */ - event->modifiers &= ~up_modifier; - symbol_num = 0; - } - else if (event->modifiers & down_modifier) - { - /* Emit a wheel-down event. */ - event->modifiers &= ~down_modifier; - symbol_num = 1; - } - else - /* Every wheel event should either have the down_modifier or - the up_modifier set. */ - abort (); - - if (event->kind == HORIZ_WHEEL_EVENT) - symbol_num += 2; /* Get the symbol we should use for the wheel event. */ head = modify_event_symbol (symbol_num, @@ -11898,7 +11895,9 @@ syms_of_keyboard () staticpro (&button_down_location); mouse_syms = Fmake_vector (make_number (5), Qnil); staticpro (&mouse_syms); - wheel_syms = Fmake_vector (make_number (4), Qnil); + wheel_syms = Fmake_vector (make_number (sizeof (lispy_wheel_names) + / sizeof (lispy_wheel_names[0])), + Qnil); staticpro (&wheel_syms); { -- 2.39.5