mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-17 17:39:29 +08:00
[v3 windows] Improve systray locking
This commit is contained in:
parent
1ce07cd67c
commit
eff456aa1a
@ -26,7 +26,9 @@ type windowsApp struct {
|
|||||||
|
|
||||||
windowMap map[w32.HWND]*windowsWebviewWindow
|
windowMap map[w32.HWND]*windowsWebviewWindow
|
||||||
windowMapLock sync.RWMutex
|
windowMapLock sync.RWMutex
|
||||||
|
|
||||||
systrayMap map[w32.HMENU]*windowsSystemTray
|
systrayMap map[w32.HMENU]*windowsSystemTray
|
||||||
|
systrayMapLock sync.RWMutex
|
||||||
|
|
||||||
mainThreadID w32.HANDLE
|
mainThreadID w32.HANDLE
|
||||||
mainThreadWindowHWND w32.HWND
|
mainThreadWindowHWND w32.HWND
|
||||||
@ -246,7 +248,10 @@ func (m *windowsApp) wndProc(hwnd w32.HWND, msg uint32, wParam, lParam uintptr)
|
|||||||
return window.WndProc(msg, wParam, lParam)
|
return window.WndProc(msg, wParam, lParam)
|
||||||
}
|
}
|
||||||
|
|
||||||
if systray, ok := m.systrayMap[hwnd]; ok {
|
m.systrayMapLock.Lock()
|
||||||
|
systray, ok := m.systrayMap[hwnd]
|
||||||
|
m.systrayMapLock.Unlock()
|
||||||
|
if ok {
|
||||||
return systray.wndProc(msg, wParam, lParam)
|
return systray.wndProc(msg, wParam, lParam)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,9 +267,17 @@ func (m *windowsApp) registerWindow(result *windowsWebviewWindow) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *windowsApp) registerSystemTray(result *windowsSystemTray) {
|
func (m *windowsApp) registerSystemTray(result *windowsSystemTray) {
|
||||||
|
m.systrayMapLock.Lock()
|
||||||
|
defer m.systrayMapLock.Unlock()
|
||||||
m.systrayMap[result.hwnd] = result
|
m.systrayMap[result.hwnd] = result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *windowsApp) unregisterSystemTray(result *windowsSystemTray) {
|
||||||
|
m.systrayMapLock.Lock()
|
||||||
|
defer m.systrayMapLock.Unlock()
|
||||||
|
delete(m.systrayMap, result.hwnd)
|
||||||
|
}
|
||||||
|
|
||||||
func (m *windowsApp) unregisterWindow(w *windowsWebviewWindow) {
|
func (m *windowsApp) unregisterWindow(w *windowsWebviewWindow) {
|
||||||
m.windowMapLock.Lock()
|
m.windowMapLock.Lock()
|
||||||
delete(m.windowMap, w.hwnd)
|
delete(m.windowMap, w.hwnd)
|
||||||
|
Loading…
Reference in New Issue
Block a user