diff options
author | David Robillard <d@drobilla.net> | 2021-05-08 13:42:37 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2021-05-08 14:29:42 -0400 |
commit | fcce346e6787875e6526efea89e74055e447f889 (patch) | |
tree | 3fa0589c678e1142bfa9a42ef939ae43c92d0e78 /src/win.c | |
parent | 17ad5fd72bd51c5324b8e52e1f55020d5a97944a (diff) | |
download | pugl-fcce346e6787875e6526efea89e74055e447f889.tar.gz pugl-fcce346e6787875e6526efea89e74055e447f889.tar.bz2 pugl-fcce346e6787875e6526efea89e74055e447f889.zip |
Send unmap/map events when the view is minimized/restored
X11 Window managers set WM_STATE to notify about minimization, often without
sending core X visibility events (which seems odd to me, but that's what Gnome
does anyway). So, implement this protocol and send map/unmap events to the
view, and adjust the Windows implementation to do the same for consistency
across all platforms.
Diffstat (limited to 'src/win.c')
-rw-r--r-- | src/win.c | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -579,14 +579,17 @@ handleMessage(PuglView* view, UINT message, WPARAM wParam, LPARAM lParam) RDW_INVALIDATE | RDW_ALLCHILDREN | RDW_INTERNALPAINT); } - if ((bool)wParam != view->visible) { - view->visible = wParam; - event.any.type = wParam ? PUGL_MAP : PUGL_UNMAP; - } + event.any.type = wParam ? PUGL_MAP : PUGL_UNMAP; break; case WM_SIZE: - handleConfigure(view, &event); - InvalidateRect(view->impl->hwnd, NULL, false); + if (wParam == SIZE_MINIMIZED) { + event.type = PUGL_UNMAP; + } else if (!view->visible) { + event.type = PUGL_MAP; + } else { + handleConfigure(view, &event); + InvalidateRect(view->impl->hwnd, NULL, false); + } break; case WM_SIZING: if (view->minAspectX) { |