diff --git a/textbox.go b/textbox.go index c4357e8..5023531 100644 --- a/textbox.go +++ b/textbox.go @@ -222,7 +222,7 @@ func (this *textBox) drawDot (can canvas.Canvas) { func (this *textBox) textOffset () image.Point { return this.InnerBounds().Min. - Sub(this.scroll). + Add(this.scroll). Sub(this.drawer.LayoutBoundsSpace().Min) } @@ -294,6 +294,7 @@ func (this *textBox) doLayout () { this.contentBounds = this.normalizedLayoutBoundsSpace() this.constrainScroll() this.contentBounds = this.contentBounds.Add(this.scroll) + // println(this.InnerBounds().String(), this.contentBounds.String()) if previousContentBounds != this.contentBounds { this.on.contentBoundsChange.Broadcast() @@ -308,19 +309,19 @@ func (this *textBox) constrainScroll () { // X if width <= innerBounds.Dx() { this.scroll.X = 0 - } else if this.scroll.X < 0 { + } else if this.scroll.X > 0 { this.scroll.X = 0 - } else if this.scroll.X > width - innerBounds.Dx() { - this.scroll.X = width - innerBounds.Dx() + } else if this.scroll.X < innerBounds.Dx() - width { + this.scroll.X = innerBounds.Dx() - width } // Y if height <= innerBounds.Dy() { this.scroll.Y = 0 - } else if this.scroll.Y < 0 { + } else if this.scroll.Y > 0 { this.scroll.Y = 0 - } else if this.scroll.Y > height - innerBounds.Dy() { - this.scroll.Y = height - innerBounds.Dy() + } else if this.scroll.Y < innerBounds.Dy() - height { + this.scroll.Y = innerBounds.Dy() - height } } @@ -333,16 +334,16 @@ func (this *textBox) scrollToDot () { // X if dot.X < innerBounds.Min.X + em { - scroll.X -= innerBounds.Min.X - dot.X + em + scroll.X += innerBounds.Min.X - dot.X + em } else if dot.X > innerBounds.Max.X - em { - scroll.X += dot.X - innerBounds.Max.X + em + scroll.X -= dot.X - innerBounds.Max.X + em } // Y if dot.Y < innerBounds.Min.Y + lineHeight { - scroll.Y -= innerBounds.Min.Y - dot.Y + lineHeight + scroll.Y += innerBounds.Min.Y - dot.Y + lineHeight } else if dot.Y > innerBounds.Max.Y - lineHeight { - scroll.Y += dot.Y - innerBounds.Max.Y + lineHeight + scroll.Y -= dot.Y - innerBounds.Max.Y + lineHeight } this.ScrollTo(scroll)