Mercurial > hg > xemacs-beta
comparison src/event-msw.c @ 1622:bf2a986fcb17
[xemacs-hg @ 2003-08-13 11:27:47 by stephent]
send mwheel events w/o scrollbars <87k79hbxwo.fsf@tleepslib.sk.tsukuba.ac.jp>
author | stephent |
---|---|
date | Wed, 13 Aug 2003 11:27:48 +0000 |
parents | 01c57eb70ae9 |
children | 29c45c1b64f3 |
comparison
equal
deleted
inserted
replaced
1621:9cf129cb99b9 | 1622:bf2a986fcb17 |
---|---|
976 int mods, DWORD when) | 976 int mods, DWORD when) |
977 { | 977 { |
978 int downp = (msg == WM_LBUTTONDOWN || msg == WM_MBUTTONDOWN || | 978 int downp = (msg == WM_LBUTTONDOWN || msg == WM_MBUTTONDOWN || |
979 msg == WM_RBUTTONDOWN); | 979 msg == WM_RBUTTONDOWN); |
980 | 980 |
981 /* Wheel rotation amount: positive is away from user, negative towards user */ | |
982 int delta = (short) HIWORD (mods); | |
983 | |
981 /* We always use last message time, because mouse button | 984 /* We always use last message time, because mouse button |
982 events may get delayed, and XEmacs double click | 985 events may get delayed, and XEmacs double click |
983 recognition will fail */ | 986 recognition will fail */ |
984 | 987 |
985 Lisp_Object emacs_event = Fmake_event (Qnil, Qnil); | 988 Lisp_Object emacs_event = Fmake_event (Qnil, Qnil); |
996 } | 999 } |
997 | 1000 |
998 XSET_EVENT_CHANNEL (emacs_event, mswindows_find_frame (hwnd)); | 1001 XSET_EVENT_CHANNEL (emacs_event, mswindows_find_frame (hwnd)); |
999 XSET_EVENT_TIMESTAMP (emacs_event, when); | 1002 XSET_EVENT_TIMESTAMP (emacs_event, when); |
1000 XSET_EVENT_BUTTON_BUTTON (emacs_event, | 1003 XSET_EVENT_BUTTON_BUTTON (emacs_event, |
1001 (msg==WM_LBUTTONDOWN || msg==WM_LBUTTONUP) ? 1 : | 1004 (msg==WM_LBUTTONDOWN || msg==WM_LBUTTONUP) ? 1 : |
1002 ((msg==WM_RBUTTONDOWN || msg==WM_RBUTTONUP) ? 3 : 2)); | 1005 (msg==WM_MBUTTONDOWN || msg==WM_MBUTTONUP) ? 2 : |
1006 (msg==WM_RBUTTONDOWN || msg==WM_RBUTTONUP) ? 3 : | |
1007 (msg==WM_MOUSEWHEEL && delta>0) ? 4 : 5); | |
1003 XSET_EVENT_BUTTON_X (emacs_event, where.x); | 1008 XSET_EVENT_BUTTON_X (emacs_event, where.x); |
1004 XSET_EVENT_BUTTON_Y (emacs_event, where.y); | 1009 XSET_EVENT_BUTTON_Y (emacs_event, where.y); |
1005 XSET_EVENT_BUTTON_MODIFIERS (emacs_event, | 1010 XSET_EVENT_BUTTON_MODIFIERS (emacs_event, |
1006 mswindows_modifier_state (NULL, mods, 0)); | 1011 mswindows_modifier_state (NULL, mods, 0)); |
1007 | 1012 |
3536 case WM_MOUSEWHEEL: | 3541 case WM_MOUSEWHEEL: |
3537 { | 3542 { |
3538 int keys = LOWORD (wParam); /* Modifier key flags */ | 3543 int keys = LOWORD (wParam); /* Modifier key flags */ |
3539 int delta = (short) HIWORD (wParam); /* Wheel rotation amount */ | 3544 int delta = (short) HIWORD (wParam); /* Wheel rotation amount */ |
3540 | 3545 |
3541 if (mswindows_handle_mousewheel_event (mswindows_find_frame (hwnd), | 3546 /* enqueue button4/5 events if mswindows_handle_mousewheel_event |
3547 doesn't handle the event, such as when the scrollbars are not | |
3548 displayed */ | |
3549 if (!mswindows_handle_mousewheel_event (mswindows_find_frame (hwnd), | |
3542 keys, delta, | 3550 keys, delta, |
3543 MAKEPOINTS (lParam))) | 3551 MAKEPOINTS (lParam))) |
3544 /* We are not in a modal loop so no pumping is necessary. */ | 3552 mswindows_enqueue_mouse_button_event (hwnd, message_, |
3545 break; | 3553 MAKEPOINTS (lParam), |
3546 else | 3554 wParam, |
3547 goto defproc; | 3555 GetMessageTime()); |
3556 /* We are not in a modal loop so no pumping is necessary. */ | |
3557 break; | |
3548 } | 3558 } |
3549 #endif | 3559 #endif |
3550 | 3560 |
3551 #ifdef HAVE_MENUBARS | 3561 #ifdef HAVE_MENUBARS |
3552 case WM_INITMENU: | 3562 case WM_INITMENU: |