diff --git a/lcl/interfaces/cocoa/cocoaprivate.pas b/lcl/interfaces/cocoa/cocoaprivate.pas index 881acae889..6320a33f84 100644 --- a/lcl/interfaces/cocoa/cocoaprivate.pas +++ b/lcl/interfaces/cocoa/cocoaprivate.pas @@ -1144,7 +1144,7 @@ begin params.isFirstCall:= not hasMarkedText(); rect:= imeHandler.IMEGetTextBound( params ); - LCLToNSRect( rect, NSGlobalScreenHeight, Result ); + LCLToNSRect( rect, NSGlobalScreenBottom, Result ); end; procedure TCocoaFullControlEdit.unmarkText; diff --git a/lcl/interfaces/cocoa/cocoawinapi.inc b/lcl/interfaces/cocoa/cocoawinapi.inc index 04f70edd99..01a11e832a 100644 --- a/lcl/interfaces/cocoa/cocoawinapi.inc +++ b/lcl/interfaces/cocoa/cocoawinapi.inc @@ -1074,7 +1074,7 @@ begin contentView := TCocoaWindowContent(Handle); if (not contentView.isembedded) and Assigned(contentView.window) then - NSToLCLRect(contentView.window.frame, NSGlobalScreenHeight, ARect) + ARect := ScreenRectFromNSToLCL( contentView.window.frame ) else ARect := contentView.lclFrame; Result := 1; @@ -1138,19 +1138,13 @@ end; function TCocoaWidgetSet.GetCursorPos(var lpPoint: TPoint ): Boolean; begin - with NSEvent.mouseLocation do - begin - lpPoint.x := Round(x); - // cocoa returns cursor with inverted y coordinate - lpPoint.y := Round(NSGlobalScreenHeight-y); - end; + lpPoint:= ScreenPointFromNSToLCL( NSEvent.mouseLocation ); //debugln('GetCursorPos='+DbgS(lpPoint)); Result := True; end; function TCocoaWidgetSet.GetMonitorInfo(hMonitor: HMONITOR; lpmi: PMonitorInfo): Boolean; var - globalScreenHeight: CGFloat; ScreenID: NSScreen; begin Result := (lpmi <> nil) and (lpmi^.cbSize >= SizeOf(TMonitorInfo)); @@ -1159,9 +1153,8 @@ begin Result := Assigned(ScreenID); if not Result then Exit; - globalScreenHeight := NSGlobalScreenHeight; - NSToLCLRect(ScreenID.frame, globalScreenHeight, lpmi^.rcMonitor); - NSToLCLRect(ScreenID.visibleFrame, globalScreenHeight, lpmi^.rcWork); + lpmi^.rcMonitor:= ScreenRectFromNSToLCL( ScreenID.frame ); + lpmi^.rcWork:= ScreenRectFromNSToLCL( ScreenID.visibleFrame ); // according to the documentation the primary (0,0 coord screen) // is always and index 0 if HMonitorToIndex(hMonitor) = 0 then @@ -1477,7 +1470,7 @@ begin Exit; p.x:=Point.X; - p.y:=NSGlobalScreenHeight-Point.Y; + p.y:=NSGlobalScreenBottom-Point.Y; window := GetCocoaWindowAtPos(p); if Assigned(window) then Result:= HWND(window.contentView); @@ -1876,7 +1869,7 @@ var i: Integer; begin Result:= 0; - point:= LCLToNSPoint( ptScreenCoords, NSGlobalScreenHeight ); + point:= ScreenPointFromLCLToNS( ptScreenCoords ); if point.y>=1 then // NSPointInRect is (upper,left) inside point.y:= point.y-1; // (lower,right) outside diff --git a/lcl/interfaces/cocoa/cocoawindows.pas b/lcl/interfaces/cocoa/cocoawindows.pas index 8ad080b81d..dd1c18fbc1 100644 --- a/lcl/interfaces/cocoa/cocoawindows.pas +++ b/lcl/interfaces/cocoa/cocoawindows.pas @@ -446,7 +446,7 @@ begin if not isembedded then begin //Window bounds should return "client rect" in screen coordinates - NSToLCLRect(window.frame, NSGlobalScreenHeight, wfrm); + wfrm := ScreenRectFromNSToLCL(window.frame); Types.OffsetRect(Result, -Result.Left+wfrm.Left, -Result.Top+wfrm.Top); end; end; @@ -1250,7 +1250,7 @@ var begin f := frame; inc(X, Round(f.origin.x)); - inc(Y, Round(NSGlobalScreenHeight - NSMaxY(f))); + inc(Y, Round(NSGlobalScreenBottom - NSMaxY(f))); end; procedure LCLWindowExtension.lclScreenToLocal(var X, Y: Integer); @@ -1259,15 +1259,15 @@ var begin f := frame; dec(X, Round(f.origin.x)); - dec(Y, Round(NSGlobalScreenHeight - NSMaxY(f))); + dec(Y, Round(NSGlobalScreenBottom - NSMaxY(f))); end; function LCLWindowExtension.lclFrame: TRect; begin if Assigned(contentView) then - Result:=contentView.lclFrame + Result:= contentView.lclFrame else - NSToLCLRect(frame, NSGlobalScreenHeight, Result); + Result:= ScreenRectFromNSToLCL( frame ); end; function LCLWindowExtension.lclGetTopBarHeight:integer; @@ -1288,12 +1288,12 @@ var ns : NSRect; h : integer; begin - LCLToNSRect(r, NSGlobalScreenHeight, ns); + ns:= ScreenRectFromLCLToNS( r ); // add topbar height - h:=lclGetTopBarHeight; - ns.size.height:=ns.size.height+h; - ns.origin.y:=ns.origin.y-h; + h:= lclGetTopBarHeight; + ns.size.height:= ns.size.height + h; + ns.origin.y:= ns.origin.y - h; {$ifdef BOOLFIX} setFrame_display_(ns, Ord(isVisible)); {$else} diff --git a/lcl/interfaces/cocoa/cocoawscommon.pas b/lcl/interfaces/cocoa/cocoawscommon.pas index e8bf47905e..978e15265c 100644 --- a/lcl/interfaces/cocoa/cocoawscommon.pas +++ b/lcl/interfaces/cocoa/cocoawscommon.pas @@ -536,8 +536,8 @@ begin if lWindow <> nil then begin f := lWindow.frame; - Point.x := Point.x+f.origin.x; - Point.y := lWindow.screen.frame.size.height- f.origin.y - Point.y; + Point.x := Point.x + f.origin.x; + Point.y := NSGlobalScreenBottom - ( Point.y + f.origin.y ); end; end; diff --git a/lcl/interfaces/cocoa/cocoawsmenus.pas b/lcl/interfaces/cocoa/cocoawsmenus.pas index f4a4a489fd..830716b2e2 100644 --- a/lcl/interfaces/cocoa/cocoawsmenus.pas +++ b/lcl/interfaces/cocoa/cocoawsmenus.pas @@ -963,7 +963,7 @@ begin point:= TPoint.Create( x, y ); screen:= getScreenFromHMonitor( CocoaWidgetSet.MonitorFromPoint(point, MONITOR_DEFAULTTONULL) ); - mouseY:= NSGlobalScreenHeight - y; + mouseY:= NSGlobalScreenBottom - y; if Assigned(screen) then begin menuY:= screen.visibleFrame.origin.y + menu.size.height + 1; menuY:= max( mouseY, MenuY );