From c7c5ffa5ab1a4cb0dd9bd3d8a079f7e5652e1ac9 Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 17 Aug 2021 21:49:58 +0100 Subject: [PATCH] Cleanup for more macOS modal fixes --- dpf/dgl/src/WindowPrivateData.cpp | 8 ------ dpf/dgl/src/pugl-upstream/src/mac.m | 10 +++++--- dpf/dgl/src/pugl.cpp | 40 ----------------------------- dpf/dgl/src/pugl.hpp | 8 ------ 4 files changed, 7 insertions(+), 59 deletions(-) diff --git a/dpf/dgl/src/WindowPrivateData.cpp b/dpf/dgl/src/WindowPrivateData.cpp index 9dd7a8c..89a7bb9 100644 --- a/dpf/dgl/src/WindowPrivateData.cpp +++ b/dpf/dgl/src/WindowPrivateData.cpp @@ -560,10 +560,6 @@ void Window::PrivateData::startModal() modal.parent->show(); show(); -#ifdef DISTRHO_OS_MAC - puglMacOSAddChildWindow(modal.parent->view, view); -#endif - DGL_DBG("Ok\n"); } @@ -580,10 +576,6 @@ void Window::PrivateData::stopModal() if (modal.parent->modal.child != this) return; -#ifdef DISTRHO_OS_MAC - puglMacOSRemoveChildWindow(modal.parent->view, view); -#endif - // stop parent from giving focus to us, so it behaves like normal modal.parent->modal.child = nullptr; diff --git a/dpf/dgl/src/pugl-upstream/src/mac.m b/dpf/dgl/src/pugl-upstream/src/mac.m index 0a531e8..d59101e 100644 --- a/dpf/dgl/src/pugl-upstream/src/mac.m +++ b/dpf/dgl/src/pugl-upstream/src/mac.m @@ -1036,10 +1036,14 @@ puglRealize(PuglView* view) puglSetFrame(view, view->frame); [window setContentView:impl->wrapperView]; - [view->world->impl->app activateIgnoringOtherApps:YES]; [window makeFirstResponder:impl->wrapperView]; - [window makeKeyAndOrderFront:window]; - [impl->window setIsVisible:NO]; + [window setIsVisible:NO]; + + if (! view->transientParent) + { + [window makeKeyAndOrderFront:window]; + [view->world->impl->app activateIgnoringOtherApps:YES]; + } } [impl->wrapperView updateTrackingAreas]; diff --git a/dpf/dgl/src/pugl.cpp b/dpf/dgl/src/pugl.cpp index 560c978..cff6b99 100644 --- a/dpf/dgl/src/pugl.cpp +++ b/dpf/dgl/src/pugl.cpp @@ -407,46 +407,6 @@ void puglMacOSActivateApp() [NSApp activateIgnoringOtherApps:YES]; } -// -------------------------------------------------------------------------------------------------------------------- -// macOS specific, add another view's window as child - -PuglStatus -puglMacOSAddChildWindow(PuglView* view, PuglView* child) -{ - if (NSWindow* const viewWindow = view->impl->window ? view->impl->window - : [view->impl->wrapperView window]) - { - if (NSWindow* const childWindow = child->impl->window ? child->impl->window - : [child->impl->wrapperView window]) - { - [viewWindow addChildWindow:childWindow ordered:NSWindowAbove]; - return PUGL_SUCCESS; - } - } - - return PUGL_FAILURE; -} - -// -------------------------------------------------------------------------------------------------------------------- -// macOS specific, remove another view's window as child - -PuglStatus -puglMacOSRemoveChildWindow(PuglView* view, PuglView* child) -{ - if (NSWindow* const viewWindow = view->impl->window ? view->impl->window - : [view->impl->wrapperView window]) - { - if (NSWindow* const childWindow = child->impl->window ? child->impl->window - : [child->impl->wrapperView window]) - { - [viewWindow removeChildWindow:childWindow]; - return PUGL_SUCCESS; - } - } - - return PUGL_FAILURE; -} - // -------------------------------------------------------------------------------------------------------------------- // macOS specific, setup file browser dialog diff --git a/dpf/dgl/src/pugl.hpp b/dpf/dgl/src/pugl.hpp index e89539a..c3322a1 100644 --- a/dpf/dgl/src/pugl.hpp +++ b/dpf/dgl/src/pugl.hpp @@ -100,14 +100,6 @@ puglFallbackOnResize(PuglView* view); PUGL_API void puglMacOSActivateApp(); -// macOS specific, add another view's window as child -PUGL_API PuglStatus -puglMacOSAddChildWindow(PuglView* view, PuglView* child); - -// macOS specific, remove another view's window as child -PUGL_API PuglStatus -puglMacOSRemoveChildWindow(PuglView* view, PuglView* child); - // macOS specific, setup file browser dialog typedef void (*openPanelCallback)(PuglView* view, const char* path); bool puglMacOSFilePanelOpen(PuglView* view, const char* startDir, const char* title, uint flags, openPanelCallback callback);