From 7a6a008128d174557cf354dd8845535f27e30af6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Salvador=20D=C3=ADaz=20Fau?= Date: Wed, 5 Feb 2020 18:52:32 +0100 Subject: [PATCH] Clip drawing area for Firemonkey browsers in OSR mode using TFMXBufferPanel --- source/uCEFFMXBufferPanel.pas | 23 +++++++++++++++-------- update_CEF4Delphi.json | 2 +- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/source/uCEFFMXBufferPanel.pas b/source/uCEFFMXBufferPanel.pas index 652ed51d..4ce192f8 100644 --- a/source/uCEFFMXBufferPanel.pas +++ b/source/uCEFFMXBufferPanel.pas @@ -275,24 +275,31 @@ end; function TFMXBufferPanel.CopyBuffer : boolean; var - TempSrc, TempDst : TRectF; + TempSrc, TempDst, TempClip : TRectF; + TempState : TCanvasSaveState; begin Result := False; if Canvas.BeginScene then try if BeginBufferDraw then - begin + try if (FBuffer <> nil) then begin - TempSrc := TRectF.Create(0, 0, FBuffer.Width, FBuffer.Height); - TempDst := TRectF.Create(0, 0, FBuffer.Width / ScreenScale, FBuffer.Height / ScreenScale); + TempSrc := TRectF.Create(0, 0, FBuffer.Width, FBuffer.Height); + TempDst := TRectF.Create(0, 0, FBuffer.Width / ScreenScale, FBuffer.Height / ScreenScale); + TempClip := TRectF.Create(0, 0, Width, Height); - Canvas.DrawBitmap(FBuffer, TempSrc, TempDst, 1, FHighSpeedDrawing); - - Result := True; + TempState := Canvas.SaveState; + try + CAnvas.IntersectClipRect(TempClip); + Canvas.DrawBitmap(FBuffer, TempSrc, TempDst, 1, FHighSpeedDrawing); + Result := True; + finally + Canvas.RestoreState(TempState); + end; end; - + finally EndBufferDraw; end; finally diff --git a/update_CEF4Delphi.json b/update_CEF4Delphi.json index ef44975f..63671445 100644 --- a/update_CEF4Delphi.json +++ b/update_CEF4Delphi.json @@ -2,7 +2,7 @@ "UpdateLazPackages" : [ { "ForceNotify" : true, - "InternalVersion" : 93, + "InternalVersion" : 94, "Name" : "cef4delphi_lazarus.lpk", "Version" : "79.1.36.0" }