app: [API] make ViewEvent an interface on all platforms

A uniform type allows convenient nil checks and for future window
backends on platforms other than Linux (which already had ViewEvent
as an interface).

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2023-12-15 16:52:38 -06:00
parent 5e5d164929
commit f3fc0d62b8
7 changed files with 34 additions and 29 deletions
+5 -4
View File
@@ -31,7 +31,7 @@ import (
"gioui.org/io/transfer"
)
type ViewEvent struct {
type Win32ViewEvent struct {
HWND uintptr
}
@@ -113,7 +113,7 @@ func newWindow(win *callbacks, options []Option) {
}
winMap.Store(w.hwnd, w)
defer winMap.Delete(w.hwnd)
w.ProcessEvent(ViewEvent{HWND: uintptr(w.hwnd)})
w.ProcessEvent(Win32ViewEvent{HWND: uintptr(w.hwnd)})
w.Configure(options)
windows.SetForegroundWindow(w.hwnd)
windows.SetFocus(w.hwnd)
@@ -308,7 +308,7 @@ func windowProc(hwnd syscall.Handle, msg uint32, wParam, lParam uintptr) uintptr
case windows.WM_MOUSEHWHEEL:
w.scrollEvent(wParam, lParam, true, getModifiers())
case windows.WM_DESTROY:
w.ProcessEvent(ViewEvent{})
w.ProcessEvent(Win32ViewEvent{})
w.ProcessEvent(DestroyEvent{})
if w.hdc != 0 {
windows.ReleaseDC(w.hdc)
@@ -1011,4 +1011,5 @@ func configForDPI(dpi int) unit.Metric {
}
}
func (_ ViewEvent) ImplementsEvent() {}
func (Win32ViewEvent) implementsViewEvent() {}
func (Win32ViewEvent) ImplementsEvent() {}