MCPcopy Create free account
hub / github.com/gioui/gio / command

Method command

widget/selectable.go:329–385  ·  view source on GitHub ↗
(gtx layout.Context, k key.Event)

Source from the content-addressed store, hash-verified

327}
328
329func (e *Selectable) command(gtx layout.Context, k key.Event) {
330 direction := 1
331 if gtx.Locale.Direction.Progression() == system.TowardOrigin {
332 direction = -1
333 }
334 moveByWord := k.Modifiers.Contain(key.ModShortcutAlt)
335 selAct := selectionClear
336 if k.Modifiers.Contain(key.ModShift) {
337 selAct = selectionExtend
338 }
339 if k.Modifiers == key.ModShortcut {
340 switch k.Name {
341 // Copy or Cut selection -- ignored if nothing selected.
342 case "C", "X":
343 e.scratch = e.text.SelectedText(e.scratch)
344 if text := string(e.scratch); text != "" {
345 gtx.Execute(clipboard.WriteCmd{Type: "application/text", Data: io.NopCloser(strings.NewReader(text))})
346 }
347 // Select all
348 case "A":
349 e.text.SetCaret(0, e.text.Len())
350 }
351 return
352 }
353 switch k.Name {
354 case key.NameUpArrow:
355 e.text.MoveLines(-1, selAct)
356 case key.NameDownArrow:
357 e.text.MoveLines(+1, selAct)
358 case key.NameLeftArrow:
359 if moveByWord {
360 e.text.MoveWord(-1*direction, selAct)
361 } else {
362 if selAct == selectionClear {
363 e.text.ClearSelection()
364 }
365 e.text.MoveCaret(-1*direction, -1*direction*int(selAct))
366 }
367 case key.NameRightArrow:
368 if moveByWord {
369 e.text.MoveWord(1*direction, selAct)
370 } else {
371 if selAct == selectionClear {
372 e.text.ClearSelection()
373 }
374 e.text.MoveCaret(1*direction, int(selAct)*direction)
375 }
376 case key.NamePageUp:
377 e.text.MovePages(-1, selAct)
378 case key.NamePageDown:
379 e.text.MovePages(+1, selAct)
380 case key.NameHome:
381 e.text.MoveLineStart(selAct)
382 case key.NameEnd:
383 e.text.MoveLineEnd(selAct)
384 }
385}
386

Callers 1

processKeyMethod · 0.95

Calls 13

ProgressionMethod · 0.80
ExecuteMethod · 0.80
MoveLinesMethod · 0.80
MoveWordMethod · 0.80
MovePagesMethod · 0.80
MoveLineStartMethod · 0.80
MoveLineEndMethod · 0.80
ContainMethod · 0.45
SelectedTextMethod · 0.45
SetCaretMethod · 0.45
LenMethod · 0.45
ClearSelectionMethod · 0.45

Tested by

no test coverage detected