1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-12-03 21:44:45 +02:00

Fixed touch events in SimpleOSRBrowser and KioskOSRBrowser demo in Windows 7

- TChromium.AcceptLanguageList is now always updated
- Added GetDigitizerStatus and HasTouchOrPen functions to uCEFMiscFunctions
This commit is contained in:
Salvador Díaz Fau
2020-02-05 14:40:22 +01:00
parent 40328b5724
commit e9601e4ee3
7 changed files with 76 additions and 18 deletions

View File

@@ -82,6 +82,16 @@ type
wProductType: BYTE;
wReserved:BYTE;
end;
{$IFDEF DELPHI14_UP}
TDigitizerStatus = record
IntegratedTouch : boolean;
ExternalTouch : boolean;
IntegratedPen : boolean;
ExternalPen : boolean;
MultiInput : boolean;
Ready : boolean;
end;
{$ENDIF}
function CefColorGetA(color: TCefColor): Byte;
function CefColorGetR(color: TCefColor): byte;
@@ -262,6 +272,8 @@ function GetWindowsMajorMinorVersion(var wMajorVersion, wMinorVersion : DWORD)
function GetDefaultCEFUserAgent : string;
{$IFDEF DELPHI14_UP}
function TouchPointToPoint(aHandle : HWND; const TouchPoint: TTouchInput): TPoint;
function GetDigitizerStatus(var aDigitizerStatus : TDigitizerStatus; aDPI : cardinal = 0) : boolean;
function HasTouchOrPen(aDPI : cardinal = 0) : boolean;
{$ENDIF}
{$ENDIF}
@@ -288,7 +300,11 @@ function CefGetDataURI(aData : pointer; aSize : integer; const aMimeType : ustri
implementation
uses
{$IFDEF DELPHI14_UP}System.Types,{$ENDIF}
{$IFDEF DELPHI16_UP}
System.Types,
{$ELSE}
{$IFDEF DELPHI14_UP}Types,{$ENDIF}
{$ENDIF}
uCEFApplicationCore, uCEFSchemeHandlerFactory, uCEFValue,
uCEFBinaryValue, uCEFStringList;
@@ -2094,6 +2110,32 @@ begin
Result := Point(TouchPoint.X div 100, TouchPoint.Y div 100);
PhysicalToLogicalPoint(aHandle, Result);
end;
function GetDigitizerStatus(var aDigitizerStatus : TDigitizerStatus; aDPI : cardinal) : boolean;
var
TempStatus : integer;
begin
if (aDPI > 0) then
TempStatus := GetSystemMetricsForDpi(SM_DIGITIZER, aDPI)
else
TempStatus := GetSystemMetrics(SM_DIGITIZER);
aDigitizerStatus.IntegratedTouch := ((TempStatus and NID_INTEGRATED_TOUCH) <> 0);
aDigitizerStatus.ExternalTouch := ((TempStatus and NID_EXTERNAL_TOUCH) <> 0);
aDigitizerStatus.IntegratedPen := ((TempStatus and NID_INTEGRATED_PEN) <> 0);
aDigitizerStatus.ExternalPen := ((TempStatus and NID_EXTERNAL_PEN) <> 0);
aDigitizerStatus.MultiInput := ((TempStatus and NID_MULTI_INPUT) <> 0);
aDigitizerStatus.Ready := ((TempStatus and NID_READY) <> 0);
Result := (TempStatus <> 0);
end;
function HasTouchOrPen(aDPI : cardinal) : boolean;
var
TempStatus : TDigitizerStatus;
begin
Result := GetDigitizerStatus(TempStatus, aDPI);
end;
{$ENDIF}
{$ENDIF}