M widget/editor.go => widget/editor.go +6 -0
@@ 984,6 984,12 @@ func (e *Editor) Read(p []byte) (int, error) {
return e.text.Read(p)
}
+// Regions returns visible regions covering the rune range [start,end).
+func (e *Editor) Regions(start, end int, regions []Region) []Region {
+ e.initBuffer()
+ return e.text.Regions(start, end, regions)
+}
+
func max(a, b int) int {
if a > b {
return a
M widget/index.go => widget/index.go +4 -0
@@ 307,6 307,10 @@ type Region struct {
Baseline int
}
+// region is identical to Region except that its coordinates are in document
+// space instead of a widget coordinate space.
+type region = Region
+
// locate returns highlight regions covering the glyphs that represent the runes in
// [startRune,endRune). If the rects parameter is non-nil, locate will use it to
// return results instead of allocating, provided that there is enough capacity.
M widget/selectable.go => widget/selectable.go +6 -0
@@ 341,3 341,9 @@ func (l *Selectable) Events() []EditorEvent {
l.prevEvents = 0
return events
}
+
+// Regions returns visible regions covering the rune range [start,end).
+func (l *Selectable) Regions(start, end int, regions []Region) []Region {
+ l.initialize()
+ return l.text.Regions(start, end, regions)
+}