diff options
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); } |