MCPcopy Create free account
hub / github.com/cogentcore/core / handleWindowEvents

Method handleWindowEvents

core/renderwindow.go:448–527  ·  view source on GitHub ↗
(e events.Event)

Source from the content-addressed store, hash-verified

446}
447
448func (w *renderWindow) handleWindowEvents(e events.Event) {
449 et := e.Type()
450 switch et {
451 case events.WindowPaint:
452 e.SetHandled()
453 rc := w.renderContext()
454 rc.unlock() // one case where we need to break lock
455 w.renderWindow()
456 rc.lock()
457 w.mains.sendShowEvents()
458
459 case events.WindowResize:
460 e.SetHandled()
461 w.resized()
462
463 case events.Window:
464 ev := e.(*events.WindowEvent)
465 switch ev.Action {
466 case events.WinClose:
467 // fmt.Printf("got close event for window %v \n", w.Name)
468 e.SetHandled()
469 w.stopEventLoop = true
470 w.closed()
471 case events.WinMinimize:
472 e.SetHandled()
473 // on mobile platforms, we need to set the size to 0 so that it detects a size difference
474 // and lets the size event go through when we come back later
475 // if Platform().IsMobile() {
476 // w.Scene.Geom.Size = image.Point{}
477 // }
478 case events.WinShow:
479 e.SetHandled()
480 // note that this is sent delayed by driver
481 if DebugSettings.WinEventTrace {
482 fmt.Printf("Win: %v got show event\n", w.name)
483 }
484 case events.WinMove:
485 e.SetHandled()
486 // fmt.Printf("win move: %v\n", w.SystemWin.Position())
487 if DebugSettings.WinGeomTrace {
488 log.Printf("WindowGeometry: recording from Move\n")
489 }
490 theWindowGeometrySaver.recordPref(w)
491 case events.WinFocus:
492 // if we are not already the last in AllRenderWins, we go there,
493 // as this allows focus to be restored to us in the future
494 if len(AllRenderWindows) > 0 && AllRenderWindows[len(AllRenderWindows)-1] != w {
495 AllRenderWindows.delete(w)
496 AllRenderWindows.add(w)
497 }
498 if !w.gotFocus {
499 w.gotFocus = true
500 w.sendWinFocusEvent(events.WinFocus)
501 if DebugSettings.WinEventTrace {
502 fmt.Printf("Win: %v got focus\n", w.name)
503 }
504 } else {
505 if DebugSettings.WinEventTrace {

Callers 1

handleEventMethod · 0.95

Calls 14

renderContextMethod · 0.95
renderWindowMethod · 0.95
resizedMethod · 0.95
closedMethod · 0.95
sendWinFocusEventMethod · 0.95
unlockMethod · 0.80
lockMethod · 0.80
sendShowEventsMethod · 0.80
recordPrefMethod · 0.80
TypeMethod · 0.65
SetHandledMethod · 0.65
PrintfMethod · 0.45

Tested by

no test coverage detected