diff options
author | David Robillard <d@drobilla.net> | 2023-01-08 01:02:07 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2023-01-08 01:06:37 -0500 |
commit | 92b5ab6bdfc8450ed3c4e4e7006cee949386dcd4 (patch) | |
tree | aa91ae18efac00651f73efef51173edbcc00489f /src | |
parent | 14b35ef217f5ee387c4f33b1b24bebb015e18f23 (diff) | |
download | pugl-92b5ab6bdfc8450ed3c4e4e7006cee949386dcd4.tar.gz pugl-92b5ab6bdfc8450ed3c4e4e7006cee949386dcd4.tar.bz2 pugl-92b5ab6bdfc8450ed3c4e4e7006cee949386dcd4.zip |
Add support for raising windows
Diffstat (limited to 'src')
-rw-r--r-- | src/mac.m | 18 | ||||
-rw-r--r-- | src/win.c | 18 | ||||
-rw-r--r-- | src/x11.c | 15 |
3 files changed, 43 insertions, 8 deletions
@@ -1311,7 +1311,7 @@ puglUnrealize(PuglView* const view) } PuglStatus -puglShow(PuglView* view) +puglShow(PuglView* view, const PuglShowCommand command) { if (!view->impl->wrapperView) { const PuglStatus st = puglRealize(view); @@ -1320,12 +1320,24 @@ puglShow(PuglView* view) } } - if (![view->impl->window isVisible]) { - [view->impl->window setIsVisible:YES]; + NSWindow* const window = [view->impl->wrapperView window]; + if (![window isVisible]) { + [window setIsVisible:YES]; [view->impl->drawView setNeedsDisplay:YES]; updateViewRect(view); } + switch (command) { + case PUGL_SHOW_PASSIVE: + break; + case PUGL_SHOW_RAISE: + [window orderFront:view->impl->wrapperView]; + break; + case PUGL_SHOW_FORCE_RAISE: + [window orderFrontRegardless]; + break; + } + return PUGL_SUCCESS; } @@ -309,7 +309,7 @@ puglUnrealize(PuglView* const view) } PuglStatus -puglShow(PuglView* view) +puglShow(PuglView* view, const PuglShowCommand command) { PuglInternals* impl = view->impl; @@ -320,8 +320,20 @@ puglShow(PuglView* view) } } - ShowWindow(impl->hwnd, SW_SHOWNORMAL); - SetFocus(impl->hwnd); + switch (command) { + case PUGL_SHOW_PASSIVE: + ShowWindow(impl->hwnd, SW_SHOWNOACTIVATE); + break; + case PUGL_SHOW_RAISE: + ShowWindow(impl->hwnd, SW_SHOWNORMAL); + SetActiveWindow(impl->hwnd); + break; + case PUGL_SHOW_FORCE_RAISE: + ShowWindow(impl->hwnd, SW_SHOWNORMAL); + SetForegroundWindow(impl->hwnd); + break; + } + return PUGL_SUCCESS; } @@ -655,12 +655,23 @@ puglUnrealize(PuglView* const view) } PuglStatus -puglShow(PuglView* const view) +puglShow(PuglView* const view, const PuglShowCommand command) { PuglStatus st = view->impl->win ? PUGL_SUCCESS : puglRealize(view); if (!st) { - XMapRaised(view->world->impl->display, view->impl->win); + switch (command) { + case PUGL_SHOW_PASSIVE: + XMapWindow(view->world->impl->display, view->impl->win); + break; + case PUGL_SHOW_RAISE: + XMapRaised(view->world->impl->display, view->impl->win); + break; + case PUGL_SHOW_FORCE_RAISE: + XMapRaised(view->world->impl->display, view->impl->win); + break; + } + st = puglPostRedisplay(view); } |