Bug 1091 - WM_MOUSEWHEEL (scroll-event) not handled correctlly

* clutter/win32/clutter-event-win32.c (message_translate): The
	coordinates in a WM_MOUSEWEEL message are given relative to the
	screen so they need to be converted to client coordinates before
	use. Thanks to Roman Yazmin.
This commit is contained in:
Neil Roberts 2008-08-07 20:34:37 +00:00
parent 3e31f02211
commit cd7b7c9c72
2 changed files with 17 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2008-08-07 Neil Roberts <neil@o-hand.com>
Bug 1091 - WM_MOUSEWHEEL (scroll-event) not handled correctlly
* clutter/win32/clutter-event-win32.c (message_translate): The
coordinates in a WM_MOUSEWEEL message are given relative to the
screen so they need to be converted to client coordinates before
use. Thanks to Roman Yazmin.
2008-08-06 Emmanuele Bassi <ebassi@openedhand.com> 2008-08-06 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-child-meta.c: * clutter/clutter-child-meta.c:

View File

@ -467,11 +467,17 @@ message_translate (ClutterBackend *backend,
event->type = CLUTTER_SCROLL; event->type = CLUTTER_SCROLL;
event->scroll.time = msg->time; event->scroll.time = msg->time;
event->scroll.x = GET_X_LPARAM (msg->lParam);
event->scroll.y = GET_Y_LPARAM (msg->lParam);
event->scroll.modifier_state event->scroll.modifier_state
= get_modifier_state (LOWORD (msg->wParam)); = get_modifier_state (LOWORD (msg->wParam));
/* conversion to window coordinates is required */
{
POINT pt = { GET_X_LPARAM (msg->lParam), GET_Y_LPARAM (msg->lParam) };
ScreenToClient (msg->hwnd, &pt);
event->scroll.x = pt.x;
event->scroll.y = pt.y;
}
if (stage_win32->scroll_pos >= WHEEL_DELTA) if (stage_win32->scroll_pos >= WHEEL_DELTA)
{ {
event->scroll.direction = CLUTTER_SCROLL_UP; event->scroll.direction = CLUTTER_SCROLL_UP;