fix rectangle intersection bug for empty rectangles

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35754 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2012-10-28 06:46:05 +00:00
parent 242d748861
commit b1d44b7f58
2 changed files with 32 additions and 15 deletions

View file

@ -1,3 +1,14 @@
2012-10-28 Richard Frith-Macdonald <rfm@gnu.org>
* Headers/Foundation/NSGeometry.m: Fix so that an empty rect can never
intersect any other (including itsself). Reported by Banly Kemiyatorn
and Fred Kiefer.
2012-10-26 Richard Frith-Macdonald <rfm@gnu.org>
* Instance/Documentation/texi.make:
Fix installation/clean of html documents generated from texi files.
2012-10-25 Quentin Mathe <quentin.mathe@gmail.com>
* Headers/GNUstepBase/GSConfig.h.in: Prevent redefinition warnings for

View file

@ -445,15 +445,19 @@ GS_GEOM_SCOPE BOOL
NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped)
{
if (flipped)
return ((aPoint.x >= NSMinX(aRect))
&& (aPoint.y >= NSMinY(aRect))
&& (aPoint.x < NSMaxX(aRect))
&& (aPoint.y < NSMaxY(aRect))) ? YES : NO;
{
return ((aPoint.x >= NSMinX(aRect))
&& (aPoint.y >= NSMinY(aRect))
&& (aPoint.x < NSMaxX(aRect))
&& (aPoint.y < NSMaxY(aRect))) ? YES : NO;
}
else
return ((aPoint.x >= NSMinX(aRect))
&& (aPoint.y > NSMinY(aRect))
&& (aPoint.x < NSMaxX(aRect))
&& (aPoint.y <= NSMaxY(aRect))) ? YES : NO;
{
return ((aPoint.x >= NSMinX(aRect))
&& (aPoint.y > NSMinY(aRect))
&& (aPoint.x < NSMaxX(aRect))
&& (aPoint.y <= NSMaxY(aRect))) ? YES : NO;
}
}
GS_GEOM_SCOPE BOOL
@ -478,10 +482,10 @@ GS_GEOM_SCOPE BOOL
NSContainsRect(NSRect aRect, NSRect bRect)
{
return (!NSIsEmptyRect(bRect)
&& (NSMinX(aRect) <= NSMinX(bRect))
&& (NSMinY(aRect) <= NSMinY(bRect))
&& (NSMaxX(aRect) >= NSMaxX(bRect))
&& (NSMaxY(aRect) >= NSMaxY(bRect))) ? YES : NO;
&& (NSMinX(aRect) <= NSMinX(bRect))
&& (NSMinY(aRect) <= NSMinY(bRect))
&& (NSMaxX(aRect) >= NSMaxX(bRect))
&& (NSMaxY(aRect) >= NSMaxY(bRect))) ? YES : NO;
}
#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
@ -495,9 +499,11 @@ NSIntersectsRect(NSRect aRect, NSRect bRect)
{
/* Note that intersecting at a line or a point doesn't count */
return (NSMaxX(aRect) <= NSMinX(bRect)
|| NSMaxX(bRect) <= NSMinX(aRect)
|| NSMaxY(aRect) <= NSMinY(bRect)
|| NSMaxY(bRect) <= NSMinY(aRect)) ? NO : YES;
|| NSMaxX(bRect) <= NSMinX(aRect)
|| NSMaxY(aRect) <= NSMinY(bRect)
|| NSMaxY(bRect) <= NSMinY(aRect)
|| NSIsEmptyRect(aRect)
|| NSIsEmptyRect(bRect)) ? NO : YES;
}
#endif