(e events.Event)
| 446 | } |
| 447 | |
| 448 | func (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 { |
no test coverage detected