You've already forked CEF4Delphi
mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-11-23 21:34:53 +02:00
Fix wrong SELECT size with multiple SELECT elements in OSR mode
This commit is contained in:
@@ -124,7 +124,8 @@ type
|
||||
function InvalidatePanel : boolean;
|
||||
function BeginBufferDraw : boolean;
|
||||
procedure EndBufferDraw;
|
||||
procedure BufferDraw(x, y : integer; const aBitmap : TBitmap);
|
||||
procedure BufferDraw(x, y : integer; const aBitmap : TBitmap); overload;
|
||||
procedure BufferDraw(const aBitmap : TBitmap; const aSrcRect, aDstRect : TRect); overload;
|
||||
function UpdateBufferDimensions(aWidth, aHeight : integer) : boolean;
|
||||
function BufferIsResized(aUseMutex : boolean = True) : boolean;
|
||||
procedure CreateIMEHandler;
|
||||
@@ -677,6 +678,11 @@ begin
|
||||
if (FBuffer <> nil) then FBuffer.Canvas.Draw(x, y, aBitmap);
|
||||
end;
|
||||
|
||||
procedure TBufferPanel.BufferDraw(const aBitmap : TBitmap; const aSrcRect, aDstRect : TRect);
|
||||
begin
|
||||
if (FBuffer <> nil) then FBuffer.Canvas.CopyRect(aDstRect, aBitmap.Canvas, aSrcRect);
|
||||
end;
|
||||
|
||||
function TBufferPanel.UpdateBufferDimensions(aWidth, aHeight : integer) : boolean;
|
||||
begin
|
||||
Result := False;
|
||||
|
||||
@@ -97,7 +97,7 @@ type
|
||||
procedure InvalidatePanel;
|
||||
function BeginBufferDraw : boolean;
|
||||
procedure EndBufferDraw;
|
||||
procedure BufferDraw(x, y : integer; const aBitmap : TBitmap);
|
||||
procedure BufferDraw(const aBitmap : TBitmap; const aSrcRect, aDstRect : TRectF);
|
||||
function UpdateBufferDimensions(aWidth, aHeight : integer) : boolean;
|
||||
function BufferIsResized(aUseMutex : boolean = True) : boolean;
|
||||
function ScreenToClient(aPoint : TPoint) : TPoint; overload;
|
||||
@@ -417,31 +417,22 @@ begin
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
procedure TFMXBufferPanel.BufferDraw(x, y : integer; const aBitmap : TBitmap);
|
||||
var
|
||||
TempSrc, TempDst : TRectF;
|
||||
TempScale : single;
|
||||
procedure TFMXBufferPanel.BufferDraw(const aBitmap : TBitmap; const aSrcRect, aDstRect : TRectF);
|
||||
begin
|
||||
if (FBuffer <> nil) then
|
||||
begin
|
||||
TempScale := ScreenScale;
|
||||
TempSrc := TRectF.Create(0, 0, aBitmap.Width, aBitmap.Height);
|
||||
TempDst := TRectF.Create(x, y, x + (aBitmap.Width / TempScale), y + (aBitmap.Height / TempScale));
|
||||
|
||||
if FBuffer.Canvas.BeginScene then
|
||||
try
|
||||
FBuffer.Canvas.DrawBitmap(aBitmap, TempSrc, TempDst, 1, FHighSpeedDrawing);
|
||||
finally
|
||||
FBuffer.Canvas.EndScene;
|
||||
end;
|
||||
end;
|
||||
if FBuffer.Canvas.BeginScene then
|
||||
try
|
||||
FBuffer.Canvas.DrawBitmap(aBitmap, aSrcRect, aDstRect, 1, FHighSpeedDrawing);
|
||||
finally
|
||||
FBuffer.Canvas.EndScene;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TFMXBufferPanel.UpdateBufferDimensions(aWidth, aHeight : integer) : boolean;
|
||||
var
|
||||
TempScale : single;
|
||||
begin
|
||||
Result := False;
|
||||
Result := False;
|
||||
TempScale := ScreenScale;
|
||||
|
||||
if ((FBuffer = nil) or
|
||||
|
||||
Reference in New Issue
Block a user