diff options
Diffstat (limited to 'uitask_windows.go')
| -rw-r--r-- | uitask_windows.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/uitask_windows.go b/uitask_windows.go index f4ce50d..1075b5b 100644 --- a/uitask_windows.go +++ b/uitask_windows.go @@ -91,7 +91,9 @@ func ui(main func()) error { var ( _dispatchMessage = user32.NewProc("DispatchMessageW") + _getActiveWindow = user32.NewProc("GetActiveWindow") _getMessage = user32.NewProc("GetMessageW") + _isDialogMessage = user32.NewProc("IsDialogMessageW") _postQuitMessage = user32.NewProc("PostQuitMessage") _sendMessage = user32.NewProc("SendMessageW") _translateMessage = user32.NewProc("TranslateMessage") @@ -119,6 +121,14 @@ func msgloop() { if r1 == 0 { // WM_QUIT message return } + // this next bit handles tab stops + r1, _, _ = _getActiveWindow.Call() + r1, _, _ = _isDialogMessage.Call( + r1, // active window + uintptr(unsafe.Pointer(&msg))) + if r1 != 0 { + continue + } _translateMessage.Call(uintptr(unsafe.Pointer(&msg))) _dispatchMessage.Call(uintptr(unsafe.Pointer(&msg))) } |
