forked from AuroraMiddleware/gtk
win32: Don't multiply the scroll event deltas by the Windows scroll lines setting. See #1408
GTK widgets expect the scroll deltas to be 1 or -1 and calculate a scroll value from that. Multiplying the delta by the Windows scroll line setting (which defaults to 3) results in a much larger delta and vastly different behaviour for running a GTK app on Windows vs on Linux. For example text view and tree view scroll by 9 lines per scroll wheel tick per default this way while on Linux it is around 3. Remove the multiplication for now.
This commit is contained in:
parent
91129be95c
commit
83204dd882
@ -3095,25 +3095,11 @@ gdk_event_translate (MSG *msg,
|
||||
|
||||
if (msg->message == WM_MOUSEWHEEL)
|
||||
{
|
||||
UINT lines_multiplier = 3;
|
||||
event->scroll.delta_y = (gdouble) GET_WHEEL_DELTA_WPARAM (msg->wParam) / (gdouble) WHEEL_DELTA;
|
||||
/* -1 means that we should scroll in screens, not lines.
|
||||
* Right now GDK doesn't support that.
|
||||
*/
|
||||
if (SystemParametersInfo (SPI_GETWHEELSCROLLLINES, 0, &lines_multiplier, 0) &&
|
||||
lines_multiplier != (UINT) -1)
|
||||
event->scroll.delta_y *= (gdouble) lines_multiplier;
|
||||
}
|
||||
else if (msg->message == WM_MOUSEHWHEEL)
|
||||
{
|
||||
UINT chars_multiplier = 3;
|
||||
event->scroll.delta_x = (gdouble) GET_WHEEL_DELTA_WPARAM (msg->wParam) / (gdouble) WHEEL_DELTA;
|
||||
/* There doesn't seem to be any indication that
|
||||
* h-scroll has an equivalent of the "screen" mode,
|
||||
* indicated by multiplier being (UINT) -1.
|
||||
*/
|
||||
if (SystemParametersInfo (SPI_GETWHEELSCROLLCHARS, 0, &chars_multiplier, 0))
|
||||
event->scroll.delta_x *= (gdouble) chars_multiplier;
|
||||
}
|
||||
/* Positive delta scrolls up, not down,
|
||||
see API documentation for WM_MOUSEWHEEL message.
|
||||
|
Loading…
Reference in New Issue
Block a user