mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 01:45:36 +00:00
widget: add some utility methods on Editor
- Focused: returns whether editor is focused - CaretPos: returns the text line & column numbers of the caret. - CaretCoords: returns the x & y pixel coordinates of the caret. - NumLines: returns the number of text lines in the editor Signed-off-by: Larry Clapp <larry@theclapp.org>
This commit is contained in:
@@ -224,6 +224,11 @@ func (e *Editor) Focus() {
|
|||||||
e.requestFocus = true
|
e.requestFocus = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Focused returns whether the editor is focused or not.
|
||||||
|
func (e *Editor) Focused() bool {
|
||||||
|
return e.focused
|
||||||
|
}
|
||||||
|
|
||||||
// Layout lays out the editor.
|
// Layout lays out the editor.
|
||||||
func (e *Editor) Layout(gtx *layout.Context, sh text.Shaper, font text.Font, size unit.Value) {
|
func (e *Editor) Layout(gtx *layout.Context, sh text.Shaper, font text.Font, size unit.Value) {
|
||||||
// Flush events from before the previous frame.
|
// Flush events from before the previous frame.
|
||||||
@@ -456,6 +461,19 @@ func (e *Editor) layoutText(s text.Shaper) ([]text.Line, layout.Dimensions) {
|
|||||||
return lines, dims
|
return lines, dims
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CaretPos returns the line & column numbers of the caret.
|
||||||
|
func (e *Editor) CaretPos() (line, col int) {
|
||||||
|
line, col, _, _ = e.layoutCaret()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// CaretCoords returns the x & y coordinates of the caret, relative to the
|
||||||
|
// editor itself.
|
||||||
|
func (e *Editor) CaretCoords() (x fixed.Int26_6, y int) {
|
||||||
|
_, _, x, y = e.layoutCaret()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (e *Editor) layoutCaret() (carLine, carCol int, x fixed.Int26_6, y int) {
|
func (e *Editor) layoutCaret() (carLine, carCol int, x fixed.Int26_6, y int) {
|
||||||
var idx int
|
var idx int
|
||||||
var prevDesc fixed.Int26_6
|
var prevDesc fixed.Int26_6
|
||||||
@@ -647,5 +665,11 @@ func (e *Editor) scrollToCaret() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NumLines returns the number of lines in the editor.
|
||||||
|
func (e *Editor) NumLines() int {
|
||||||
|
e.makeValid()
|
||||||
|
return len(e.lines)
|
||||||
|
}
|
||||||
|
|
||||||
func (s ChangeEvent) isEditorEvent() {}
|
func (s ChangeEvent) isEditorEvent() {}
|
||||||
func (s SubmitEvent) isEditorEvent() {}
|
func (s SubmitEvent) isEditorEvent() {}
|
||||||
|
|||||||
Reference in New Issue
Block a user