captainigloo pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=869ed025a2eca5f4d2b808fe456ddc65a40b508a
commit 869ed025a2eca5f4d2b808fe456ddc65a40b508a Author: pierre lamot <pierre.la...@openwide.fr> Date: Thu Apr 2 15:44:45 2015 +0200 ecore_cocoa: fix scrollwheel behavior - prioritize vertical scroll over horizontal - set amount to either -1 or 1, since EFL doesn't handle other value properly - fix wheel bouncing with some devices (X:0,Y:0 scrolling events) @fix --- src/lib/ecore_cocoa/ecore_cocoa.m | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore_cocoa/ecore_cocoa.m b/src/lib/ecore_cocoa/ecore_cocoa.m index 1da3ed5..64eda41 100644 --- a/src/lib/ecore_cocoa/ecore_cocoa.m +++ b/src/lib/ecore_cocoa/ecore_cocoa.m @@ -324,16 +324,40 @@ ecore_cocoa_feed_events(void *anEvent) EcoreCocoaWindow *window = (EcoreCocoaWindow *)[event window]; Ecore_Event_Mouse_Wheel *ev; + float dx, dy = 0; ev = malloc(sizeof(Ecore_Event_Mouse_Wheel)); if (!ev) return pass; + if ([event hasPreciseScrollingDeltas]) + { + dx = -[event scrollingDeltaX]; + dy = -[event scrollingDeltaY]; + } + else + { + dx = -[event deltaX]; + dy = -[event deltaY]; + } + + if (dx == 0 && dy == 0) + { + break; + } + ev->window = (Ecore_Window)window.ecore_window_data; ev->event_window = ev->window; ev->modifiers = 0; /* FIXME: keep modifier around. */ ev->timestamp = time; - ev->z = [event deltaX] != 0 ? [event deltaX] : -([event deltaY]); - ev->direction = [event deltaX] != 0 ? 1 : 0; + if (dy != 0) + { + ev->z = (dy > 0) ? 1 : -1; + } + else + { + ev->z = (dx > 0) ? 1 : -1; + } + ev->direction = (dy != 0) ? 0 : 1; ecore_event_add(ECORE_EVENT_MOUSE_WHEEL, ev, NULL, NULL); --