diff options
author | Neil <nyamatongwe@gmail.com> | 2014-06-22 12:50:03 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2014-06-22 12:50:03 +1000 |
commit | 77b174e27eb28ffce6794588d0de1433bffe7672 (patch) | |
tree | 196e0621062c01e8de3e294e321795413041468a /src/PositionCache.cxx | |
parent | 97738a2c60e7b3cb778f6d9f9045ad5a3ca67986 (diff) | |
download | scintilla-mirror-77b174e27eb28ffce6794588d0de1433bffe7672.tar.gz |
Drawing and measuring should not change ViewStyle which is set by the container
so mark ViewStyle parameters as const.
Provide a FontAlias copy constructor and use it to work around non-const Font
arguments to Surface when sourced from const ViewStyle.
Diffstat (limited to 'src/PositionCache.cxx')
-rw-r--r-- | src/PositionCache.cxx | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/PositionCache.cxx b/src/PositionCache.cxx index 0d2033bb9..2badeffbc 100644 --- a/src/PositionCache.cxx +++ b/src/PositionCache.cxx @@ -637,7 +637,7 @@ void PositionCache::SetSize(size_t size_) { pces.resize(size_); } -void PositionCache::MeasureWidths(Surface *surface, ViewStyle &vstyle, unsigned int styleNumber, +void PositionCache::MeasureWidths(Surface *surface, const ViewStyle &vstyle, unsigned int styleNumber, const char *s, unsigned int len, XYPOSITION *positions, Document *pdoc) { allClear = false; @@ -667,7 +667,8 @@ void PositionCache::MeasureWidths(Surface *surface, ViewStyle &vstyle, unsigned XYPOSITION xStartSegment = 0; while (startSegment < len) { unsigned int lenSegment = pdoc->SafeSegment(s + startSegment, len - startSegment, BreakFinder::lengthEachSubdivision); - surface->MeasureWidths(vstyle.styles[styleNumber].font, s + startSegment, lenSegment, positions + startSegment); + FontAlias fontStyle = vstyle.styles[styleNumber].font; + surface->MeasureWidths(fontStyle, s + startSegment, lenSegment, positions + startSegment); for (unsigned int inSeg = 0; inSeg < lenSegment; inSeg++) { positions[startSegment + inSeg] += xStartSegment; } @@ -675,7 +676,8 @@ void PositionCache::MeasureWidths(Surface *surface, ViewStyle &vstyle, unsigned startSegment += lenSegment; } } else { - surface->MeasureWidths(vstyle.styles[styleNumber].font, s, len, positions); + FontAlias fontStyle = vstyle.styles[styleNumber].font; + surface->MeasureWidths(fontStyle, s, len, positions); } if (probe < pces.size()) { // Store into cache |