diff --git a/docs/Contributors.txt b/docs/Contributors.txt index cc168fcac5..051611d885 100644 --- a/docs/Contributors.txt +++ b/docs/Contributors.txt @@ -1,4 +1,4 @@ -The following people contributed to Lazarus: +The following people contributed to Lazarus: A. J. Venter Aleksey Lagunov @@ -93,6 +93,7 @@ Sergio Marcelo Shane Miller Stefan Hille Taras Boychuk +Tobias Giesen Tomas Gregorovic Tom Lisjac Tony Maro diff --git a/lcl/interfaces/carbon/carbonproc.pp b/lcl/interfaces/carbon/carbonproc.pp index ee7303ef28..426d803e93 100644 --- a/lcl/interfaces/carbon/carbonproc.pp +++ b/lcl/interfaces/carbon/carbonproc.pp @@ -712,10 +712,20 @@ end; ------------------------------------------------------------------------------} function CGRectToRect(const ARect: CGRect): TRect; begin - Result.Left := Floor(ARect.origin.x); - Result.Top := Floor(ARect.origin.y); - Result.Right := Ceil(ARect.origin.x + ARect.size.width); - Result.Bottom := Ceil(ARect.origin.y + ARect.size.height); + if CGRectIsNull(ARect) <> 0 then + begin // CGRect passed is invalid! + Result.Left := 0; + Result.Top := 0; + Result.Right := 0; + Result.Bottom := 0; + end + else + begin + Result.Left := Floor(ARect.origin.x); + Result.Top := Floor(ARect.origin.y); + Result.Right := Ceil(ARect.origin.x + ARect.size.width); + Result.Bottom := Ceil(ARect.origin.y + ARect.size.height); + end; end; {------------------------------------------------------------------------------ @@ -751,10 +761,20 @@ end; ------------------------------------------------------------------------------} function HIRectToCarbonRect(const ARect: HIRect): FPCMacOSAll.Rect; begin - Result.Left := Floor(ARect.origin.x); - Result.Top := Floor(ARect.origin.y); - Result.Right := Ceil(ARect.origin.x + ARect.size.width); - Result.Bottom := Ceil(ARect.origin.y + ARect.size.height); + if CGRectIsNull(ARect) <> 0 then + begin // CGRect passed is invalid! + Result.Left := 0; + Result.Top := 0; + Result.Right := 0; + Result.Bottom := 0; + end + else + begin + Result.Left := Floor(ARect.origin.x); + Result.Top := Floor(ARect.origin.y); + Result.Right := Ceil(ARect.origin.x + ARect.size.width); + Result.Bottom := Ceil(ARect.origin.y + ARect.size.height); + end; end; {------------------------------------------------------------------------------