AHHHHH!!!
This commit is contained in:
parent
fa934fa485
commit
e2e846a0e5
@ -38,7 +38,7 @@ func run () {
|
||||
popups.NewDialog(popups.DialogKindInfo, "", "Sike!")
|
||||
})
|
||||
mouse := testing.NewMouse()
|
||||
input := basicElements.NewTextBox("Write some text", "fkjasdklfja\ndjkfhadf")
|
||||
input := basicElements.NewTextBox("Write some text", "")
|
||||
form := basicElements.NewContainer(basicLayouts.Vertical { true, false})
|
||||
form.Adopt(basicElements.NewLabel("I have:", false), false)
|
||||
form.Adopt(basicElements.NewSpacer(true), false)
|
||||
|
@ -65,6 +65,7 @@ func (setter *TypeSetter) needLayout () {
|
||||
|
||||
// add a null onto the end because the very end of the text should have
|
||||
// a valid layout position
|
||||
// lastLine = lastLine
|
||||
lastWord := &lastLine.Words[len(lastLine.Words) - 1]
|
||||
lastWord.Runes = append (lastWord.Runes, RuneLayout {
|
||||
X: lastWord.Width + lastWord.SpaceAfter,
|
||||
@ -203,8 +204,11 @@ func (setter *TypeSetter) For (iterator RuneIterator) {
|
||||
|
||||
index := 0
|
||||
for _, line := range setter.lines {
|
||||
lastCharRightBound := fixed.Int26_6(0)
|
||||
|
||||
for _, word := range line.Words {
|
||||
for _, char := range word.Runes {
|
||||
lastCharRightBound = word.X + char.X + char.Width
|
||||
keepGoing := iterator (index, char.Rune, fixed.Point26_6 {
|
||||
X: word.X + char.X,
|
||||
Y: line.Y,
|
||||
@ -212,13 +216,20 @@ func (setter *TypeSetter) For (iterator RuneIterator) {
|
||||
if !keepGoing { return }
|
||||
index ++
|
||||
}}
|
||||
if line.BreakAfter { index ++ }
|
||||
|
||||
if line.BreakAfter {
|
||||
keepGoing := iterator (index, '\n', fixed.Point26_6 {
|
||||
X: lastCharRightBound,
|
||||
Y: line.Y,
|
||||
})
|
||||
if !keepGoing { return }
|
||||
index ++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// AtPosition returns the index of the rune at the specified position.
|
||||
func (setter *TypeSetter) AtPosition (position fixed.Point26_6) (index int) {
|
||||
println("XXX", position.Y.Round())
|
||||
setter.needAlignedLayout()
|
||||
|
||||
if setter.lines == nil { return }
|
||||
@ -250,12 +261,12 @@ func (setter *TypeSetter) AtPosition (position fixed.Point26_6) (index int) {
|
||||
for _, curWord := range line.Words {
|
||||
for _, curChar := range curWord.Runes {
|
||||
x := curWord.X + curChar.X + curChar.Width
|
||||
println(index, x.Round(), position.X.Round())
|
||||
if x > position.X { goto foundRune }
|
||||
index ++
|
||||
}
|
||||
}
|
||||
foundRune:
|
||||
println(index)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -110,6 +110,24 @@ func TestSetterIndex (test *testing.T) {
|
||||
|
||||
pos = fixed.P(-59, 230)
|
||||
index = setter.AtPosition(pos)
|
||||
expect = 20
|
||||
if index != expect {
|
||||
test.Fatalf (
|
||||
`setter index at (%d, %d): %d, expected: %d`,
|
||||
pos.X.Round(), pos.Y.Round(), index, expect)
|
||||
}
|
||||
|
||||
pos = fixed.P(-500, -500)
|
||||
index = setter.AtPosition(pos)
|
||||
expect = 0
|
||||
if index != expect {
|
||||
test.Fatalf (
|
||||
`setter index at (%d, %d): %d, expected: %d`,
|
||||
pos.X.Round(), pos.Y.Round(), index, expect)
|
||||
}
|
||||
|
||||
pos = fixed.P(500, -500)
|
||||
index = setter.AtPosition(pos)
|
||||
expect = 19
|
||||
if index != expect {
|
||||
test.Fatalf (
|
||||
@ -119,7 +137,7 @@ func TestSetterIndex (test *testing.T) {
|
||||
|
||||
pos = fixed.P(500, 500)
|
||||
index = setter.AtPosition(pos)
|
||||
expect = 45
|
||||
expect = setter.Length()
|
||||
if index != expect {
|
||||
test.Fatalf (
|
||||
`setter index at (%d, %d): %d, expected: %d`,
|
||||
|
Reference in New Issue
Block a user