Cocoa: simplify coordinate conversion related to Window

This commit is contained in:
rich2014 2023-10-21 09:52:35 +08:00
parent a4863bb0e3
commit 0c99ef9d0d

View File

@ -446,10 +446,7 @@ begin
if not isembedded then if not isembedded then
begin begin
//Window bounds should return "client rect" in screen coordinates //Window bounds should return "client rect" in screen coordinates
if Assigned(window.screen) then NSToLCLRect(window.frame, NSGlobalScreenHeight, wfrm);
NSToLCLRect(window.frame, NSGlobalScreenHeight, wfrm)
else
wfrm := NSRectToRect(frame);
Types.OffsetRect(Result, -Result.Left+wfrm.Left, -Result.Top+wfrm.Top); Types.OffsetRect(Result, -Result.Left+wfrm.Left, -Result.Top+wfrm.Top);
end; end;
end; end;
@ -1241,37 +1238,28 @@ procedure LCLWindowExtension.lclRelativePos(var Left, Top: Integer);
var var
f: NSRect; f: NSRect;
begin begin
if Assigned(screen) then
begin
f:=frame; f:=frame;
Left := Round(f.origin.x); Left := Round(f.origin.x);
Top := Round(NSGlobalScreenHeight - f.size.height - f.origin.y); Top := Round(NSGlobalScreenHeight - NSMaxY(f));
//debugln('Top:'+dbgs(Top)); //debugln('Top:'+dbgs(Top));
end;
end; end;
procedure LCLWindowExtension.lclLocalToScreen(var X, Y:Integer); procedure LCLWindowExtension.lclLocalToScreen(var X, Y:Integer);
var var
f: NSRect; f: NSRect;
begin begin
if Assigned(screen) then
begin
f := frame; f := frame;
inc(X, Round(f.origin.x)); inc(X, Round(f.origin.x));
inc(Y, Round(NSGlobalScreenHeight - f.size.height - f.origin.y)); inc(Y, Round(NSGlobalScreenHeight - NSMaxY(f)));
end;
end; end;
procedure LCLWindowExtension.lclScreenToLocal(var X, Y: Integer); procedure LCLWindowExtension.lclScreenToLocal(var X, Y: Integer);
var var
f: NSRect; f: NSRect;
begin begin
if Assigned(screen) then
begin
f := frame; f := frame;
dec(X, Round(f.origin.x)); dec(X, Round(f.origin.x));
dec(Y, Round(NSGlobalScreenHeight - f.size.height - f.origin.y)); dec(Y, Round(NSGlobalScreenHeight - NSMaxY(f)));
end;
end; end;
function LCLWindowExtension.lclFrame: TRect; function LCLWindowExtension.lclFrame: TRect;
@ -1279,12 +1267,7 @@ begin
if Assigned(contentView) then if Assigned(contentView) then
Result:=contentView.lclFrame Result:=contentView.lclFrame
else else
begin NSToLCLRect(frame, NSGlobalScreenHeight, Result);
if Assigned(screen) then
NSToLCLRect(frame, NSGlobalScreenHeight, Result)
else
Result := NSRectToRect(frame);
end;
end; end;
function LCLWindowExtension.lclGetTopBarHeight:integer; function LCLWindowExtension.lclGetTopBarHeight:integer;