diff --git a/dgl/Window.hpp b/dgl/Window.hpp index 2d5804f45..c32ba0fd0 100644 --- a/dgl/Window.hpp +++ b/dgl/Window.hpp @@ -442,6 +442,14 @@ class DISTRHO_API Window bool automaticallyScale = false, bool resizeNowIfAutoScaling = true); + /** + Set the transient parent of the window. + + Set this for transient children like dialogs, to have them properly associated with their parent window. + This should be not be called for embed windows, or after making the window visible. + */ + void setTransientParent(uintptr_t transientParentWindowHandle); + /** DEPRECATED Use isIgnoringKeyRepeat(). */ DISTRHO_DEPRECATED_BY("isIgnoringKeyRepeat()") inline bool getIgnoringKeyRepeat() const noexcept { return isIgnoringKeyRepeat(); } diff --git a/dgl/src/Window.cpp b/dgl/src/Window.cpp index b65261ff3..a068038ec 100644 --- a/dgl/src/Window.cpp +++ b/dgl/src/Window.cpp @@ -465,6 +465,11 @@ void Window::setGeometryConstraints(uint minimumWidth, } } +void Window::setTransientParent(const uintptr_t transientParentWindowHandle) +{ + puglSetTransientParent(pData->view, transientParentWindowHandle); +} + std::vector Window::getClipboardDataOfferTypes() { std::vector offerTypes; @@ -521,13 +526,6 @@ void Window::onFileSelected(const char*) } #endif -#if 0 -void Window::setTransientWinId(const uintptr_t winId) -{ - puglSetTransientFor(pData->view, winId); -} -#endif - // ----------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/distrho/src/DistrhoUIInternal.hpp b/distrho/src/DistrhoUIInternal.hpp index fb36f6e3b..4c1c877d0 100644 --- a/distrho/src/DistrhoUIInternal.hpp +++ b/distrho/src/DistrhoUIInternal.hpp @@ -312,14 +312,12 @@ class UIExporter uiData->window->setTitle(uiTitle); } - void setWindowTransientWinId(const uintptr_t winId) + void setWindowTransientWinId(const uintptr_t transientParentWindowHandle) { #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI - ui->setTransientWindowId(winId); -#elif 0 /* TODO */ - glWindow.setTransientWinId(winId); + ui->setTransientWindowId(transientParentWindowHandle); #else - (void)winId; + uiData->window->setTransientParent(transientParentWindowHandle); #endif }