[squeak-dev] The Trunk: ST80-mt.279.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Feb 22 07:41:56 UTC 2022
Marcel Taeumel uploaded a new version of ST80 to project The Trunk:
http://source.squeak.org/trunk/ST80-mt.279.mcz
==================== Summary ====================
Name: ST80-mt.279
Author: mt
Time: 22 February 2022, 8:41:55.006334 am
UUID: 3d65bef8-ad3a-c843-9848-f3845292dafd
Ancestors: ST80-mt.278
Fixes regression in MVC text composition.
=============== Diff against ST80-mt.278 ===============
Item was changed:
----- Method: CompositionScanner>>composeLine:fromCharacterIndex:inParagraph: (in category '*ST80-Support') -----
composeLine: lineIndex fromCharacterIndex: startIndex inParagraph: aParagraph
"Answer an instance of TextLineInterval that represents the next line in the paragraph."
+ | runLength stopCondition |
- | runLength stopCondition lineSpacing |
destX := spaceX := leftMargin := aParagraph leftMarginForCompositionForLine: lineIndex.
destY := 0.
rightMargin := aParagraph rightMarginForComposition.
leftMargin >= rightMargin ifTrue: [self error: 'No room between margins to compose'].
lastIndex := startIndex. "scanning sets last index"
lineHeight := baseline := 0. "Will be increased by setFont"
lineGap := lineGapSlice := -9999. "Will be increased by setFont; allow negative to show all effects of a custom #extraGap value. See TTFontDescription."
topMargin := bottomMargin := 0.
self setStopConditions. "also sets font"
self handleIndentation.
runLength := text runLengthFor: startIndex.
runStopIndex := (lastIndex := startIndex) + (runLength - 1).
line := TextLineInterval
start: lastIndex
stop: 0
internalSpaces: 0
paddingWidth: 0.
nextIndexAfterLineBreak := spaceCount := 0.
lastBreakIsNotASpace := false.
[stopCondition := self scanCharactersFrom: lastIndex to: runStopIndex
in: text string rightX: rightMargin.
"See setStopConditions for stopping conditions for composing."
self perform: stopCondition] whileFalse.
+ self flag: #margins. "mt: Note that this path does not support #lineSpacing because ST80's text views do not use TextComposer but TextLineInterval and their own legacy Paragraph class."
- lineHeight := lineHeight + lineGap.
- baseline := baseline + lineGapSlice.
+ ^ line
+ lineHeight: lineHeight + lineGap
+ baseline: baseline + lineGapSlice!
- "TODO: Allow special characters or text attributes to accumulate extra top or bottom margin."
- (lineSpacing := textStyle lineSpacing) = 0.0
- ifFalse: [bottomMargin := bottomMargin + (lineSpacing * lineHeight) truncated].
-
- line lineHeight: lineHeight baseline: baseline.
- line topMargin: topMargin bottomMargin: bottomMargin.
-
- ^ line!
More information about the Squeak-dev
mailing list
|