mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-03 00:16:15 +00:00
io/router: don't trigger redraw for handler reset events
key.InputOp and pointer.InputOp handlers are reset on first registration
through a key.FocusEvent{false} or pointer.Cancel, respectively.
However, the mere act of registering a handle shouldn't result in a
redraw. This is particularly true for misconfigured handlers where a new
tag is supplied every frame, resulting in continously redrawing.
Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
@@ -15,6 +15,26 @@ import (
|
||||
"gioui.org/op"
|
||||
)
|
||||
|
||||
func TestPointerWakeup(t *testing.T) {
|
||||
handler := new(int)
|
||||
var ops op.Ops
|
||||
addPointerHandler(&ops, handler, image.Rect(0, 0, 100, 100))
|
||||
|
||||
var r Router
|
||||
// Test that merely adding a handler doesn't trigger redraw.
|
||||
r.Frame(&ops)
|
||||
if _, wake := r.WakeupTime(); wake {
|
||||
t.Errorf("adding pointer.InputOp triggered a redraw")
|
||||
}
|
||||
// However, adding a handler queues a Cancel event.
|
||||
assertEventSequence(t, r.Events(handler), pointer.Cancel)
|
||||
// Verify that r.Events does trigger a redraw.
|
||||
r.Frame(&ops)
|
||||
if _, wake := r.WakeupTime(); !wake {
|
||||
t.Errorf("pointer.Cancel event didn't trigger a redraw")
|
||||
}
|
||||
}
|
||||
|
||||
func TestPointerDrag(t *testing.T) {
|
||||
handler := new(int)
|
||||
var ops op.Ops
|
||||
|
||||
Reference in New Issue
Block a user