package module
Version: v0.0.0-...-f063931 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Dec 7, 2020 License: MIT, Unlicense Imports: 2 Imported by: 0



This package provides types to manage Gio events.


This package has no stable API, and should always be locked to a particular commit with go modules.



A spy is an event processing tool that wraps a Gio event queue. Whenever its Events method is invoked, it makes the same Events call on the wrapped queue, but makes a copy of all events that it receives from the underlying queue. This copy can be accessed using the AllEvents() method.

The primary use-case for this type is observing the raw event stream for a UI component that consumes some-but-not-all of the relevant events. For instance, you can extend the keyboard shortcuts understood by material.Editor by providing a spied-upon layout.Context to it and then (after laying it out) checking the events within the spy for the keystrokes of interest.

The Spy was conceived by ~eliasnaur in this mailing list discussion.


This type is returned by the Spy, but can also be instantiated literally. It functions as a simple standalone event queue tha responds to a single, specific tag.


CombinedQueue combines the output of two queues. This can be useful to join the events of the "real" gio event queue with a fake one like an EventGroup.


You can send bug reports, feature requests, questions, and patches to my public inbox.

All patches should be Signed-off to indicate conformance with the LICENSE of this repo.


Dual MIT/Unlicense; same as Gio



Package events provides types to help manage Gio events and event routing.



This section is empty.


This section is empty.


func Combine

func Combine(gtx layout.Context, queue event.Queue) layout.Context

Combine configures the provided context so that its event queue is a CombinedQueue of its original event queue and the provided event queue.


type CombinedQueue

type CombinedQueue struct {
	A, B event.Queue

CombinedQueue combines the results of two queues into one.

func (CombinedQueue) Events

func (u CombinedQueue) Events(tag event.Tag) []event.Event

Events returns the combined results of the two queues.

type EventGroup

type EventGroup struct {
	Items []event.Event

EventGroup contains a list of events and the tag that they are associated with. It can be used as an event.Queue.

func (*EventGroup) Events

func (e *EventGroup) Events(tag event.Tag) (out []event.Event)

type Spy

type Spy struct {
	Queue event.Queue
	// contains filtered or unexported fields

Spy wraps an event.Queue and makes a copy of each event that is requested from the queue. These copies can be accessed by higher-level logic after laying out widgets that consume events.

func Enspy

func Enspy(gtx layout.Context) (*Spy, layout.Context)

Enspy returns a new spy and a copy of the layout.Context configured to use that spy wrapped around its original queue.

func (*Spy) AllEvents

func (s *Spy) AllEvents() (events []EventGroup)

AllEvents returns all events that have been requested via the Events() method since the last call to AllEvents().

func (*Spy) Events

func (s *Spy) Events(tag event.Tag) []event.Event

Events returns the events for a given tag from the wrapped Queue.

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL