LCL Win32: Fix WM_MOUSEWHEEL handling for Synaptics and other touchpad drivers. Issue #25209, modified from patch by Dmitry Zhylko.

git-svn-id: trunk@47038 -
This commit is contained in:
juha 2014-11-30 11:46:41 +00:00
parent 3dd8de39eb
commit 9996c5feef

View File

@ -272,6 +272,8 @@ var
TmpSize: TSize; // used by WM_MEASUREITEM
Info: TComboboxInfo;
OrgCharCode: word; // used in WM_CHAR handling
SynapticsWindow: HWND; // used by WM_MOUSEWHEEL
SynapticsClassName: PAnsiChar; // used by WM_MOUSEWHEEL
function GetMenuParent(ASearch, AParent: HMENU): HMENU;
var
@ -1862,6 +1864,19 @@ begin
P.X := X;
P.Y := Y;
TargetWindow := TWin32WidgetSet(WidgetSet).WindowFromPoint(P);
// For Synaptics and Lenovo (and other?) touchpad driver
SynapticsWindow := Windows.WindowFromPoint(P);
GetMem(SynapticsClassName, 50);
try
GetClassNameA(SynapticsWindow, SynapticsClassName, 50);
// Not only for Synaptics any more
//if SynapticsClassName = 'SynTrackCursorWindowClass' then
TargetWindow := Window;
finally
FreeMem(SynapticsClassName);
end;
if (TargetWindow = 0) or not IsWindowEnabled(TargetWindow) then
exit;