More selection fixes

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@8451 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2000-12-27 07:39:25 +00:00
parent 7fdaabcdde
commit afc3dfd686
3 changed files with 36 additions and 10 deletions

View file

@ -195,8 +195,9 @@ static NSCharacterSet *invSelectionWordGranularitySet;
return NSZeroRect;
}
- (unsigned)glyphIndexForPoint:(NSPoint)point
inTextContainer:(NSTextContainer *)aTextContainer
- (unsigned) glyphIndexForPoint: (NSPoint)point
inTextContainer: (NSTextContainer*)aTextContainer
fractionOfDistanceThroughGlyph: (float*)partialFraction
{
_GNULineLayoutInfo *currentInfo = [_lineLayoutInformation
objectAtIndex:
@ -211,12 +212,22 @@ static NSCharacterSet *invSelectionWordGranularitySet;
float fmax = NSMaxX(rect);
float w1, w2;
if (partialFraction != 0)
{
*partialFraction = 0.0;
}
if (x <= fmin)
return MAX(0, min - 1);
{
return MAX(0, min - 1);
}
if (x >= fmax)
return MAX(0, max);
{
return MAX(0, max);
}
if (range.length == 1)
return min;
{
return min;
}
// this should give a good starting index for binary search
i = (int)((max - min) * (x - fmin) / (fmax - fmin)) + min;
@ -244,6 +255,10 @@ static NSCharacterSet *invSelectionWordGranularitySet;
i = (max + min) / 2;
continue;
}
if (w1 > x)
{
*partialFraction = 1.0 - (w1 - x)/(w1 - w2);
}
return MAX(0, i-1);
}
return MAX(0, min - 1);