aboutsummaryrefslogtreecommitdiffstats
path: root/src/win.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-05-08 13:42:37 -0400
committerDavid Robillard <d@drobilla.net>2021-05-08 14:29:42 -0400
commitfcce346e6787875e6526efea89e74055e447f889 (patch)
tree3fa0589c678e1142bfa9a42ef939ae43c92d0e78 /src/win.c
parent17ad5fd72bd51c5324b8e52e1f55020d5a97944a (diff)
downloadpugl-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.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/win.c b/src/win.c
index 448e053..d1a66cd 100644
--- a/src/win.c
+++ b/src/win.c
@@ -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) {