TextBox can be selected with left, middle, and right buttons
This commit is contained in:
parent
fd6297b4fb
commit
832d7e02ef
@ -3,7 +3,6 @@ package system
|
|||||||
import "image"
|
import "image"
|
||||||
import "git.tebibyte.media/tomo/tomo/input"
|
import "git.tebibyte.media/tomo/tomo/input"
|
||||||
|
|
||||||
// TODO: redo all of this because there are new event propogation rules
|
|
||||||
// TODO: once go v1.23 comes out, replace the explicit iterator calls here with
|
// TODO: once go v1.23 comes out, replace the explicit iterator calls here with
|
||||||
// range loops
|
// range loops
|
||||||
|
|
||||||
|
@ -248,14 +248,18 @@ func (this *textBox) textOffset () image.Point {
|
|||||||
Sub(this.drawer.LayoutBoundsSpace().Min)
|
Sub(this.drawer.LayoutBoundsSpace().Min)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *textBox) handleFocusEnter () {
|
||||||
|
this.invalidateDraw()
|
||||||
|
this.box.handleFocusEnter()
|
||||||
|
}
|
||||||
|
|
||||||
func (this *textBox) handleFocusLeave () {
|
func (this *textBox) handleFocusLeave () {
|
||||||
this.on.dotChange.Broadcast()
|
|
||||||
this.invalidateDraw()
|
this.invalidateDraw()
|
||||||
this.box.handleFocusLeave()
|
this.box.handleFocusLeave()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *textBox) handleMouseDown (button input.Button) bool {
|
func (this *textBox) handleMouseDown (button input.Button) bool {
|
||||||
if button == input.ButtonLeft {
|
if this.mouseButtonCanDrag(button) {
|
||||||
index := this.runeUnderMouse()
|
index := this.runeUnderMouse()
|
||||||
this.selectStart = index
|
this.selectStart = index
|
||||||
this.selecting = true
|
this.selecting = true
|
||||||
@ -265,7 +269,7 @@ func (this *textBox) handleMouseDown (button input.Button) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *textBox) handleMouseUp (button input.Button) bool {
|
func (this *textBox) handleMouseUp (button input.Button) bool {
|
||||||
if button == input.ButtonLeft && this.selecting {
|
if this.mouseButtonCanDrag(button) && this.selecting {
|
||||||
index := this.runeUnderMouse()
|
index := this.runeUnderMouse()
|
||||||
this.selecting = false
|
this.selecting = false
|
||||||
this.Select(text.Dot { Start: this.selectStart, End: index })
|
this.Select(text.Dot { Start: this.selectStart, End: index })
|
||||||
@ -273,6 +277,12 @@ func (this *textBox) handleMouseUp (button input.Button) bool {
|
|||||||
return this.box.handleMouseUp(button)
|
return this.box.handleMouseUp(button)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *textBox) mouseButtonCanDrag (button input.Button) bool {
|
||||||
|
return button == input.ButtonLeft ||
|
||||||
|
button == input.ButtonMiddle ||
|
||||||
|
button == input.ButtonRight
|
||||||
|
}
|
||||||
|
|
||||||
func (this *textBox) handleMouseMove () bool {
|
func (this *textBox) handleMouseMove () bool {
|
||||||
if this.selecting {
|
if this.selecting {
|
||||||
index := this.runeUnderMouse()
|
index := this.runeUnderMouse()
|
||||||
|
Loading…
Reference in New Issue
Block a user