diff --git a/dgl/src/WindowPrivateData.cpp b/dgl/src/WindowPrivateData.cpp index 6c4ee299..a00320c7 100644 --- a/dgl/src/WindowPrivateData.cpp +++ b/dgl/src/WindowPrivateData.cpp @@ -761,7 +761,7 @@ PuglStatus Window::PrivateData::puglEventCallback(PuglView* const view, const Pu case PUGL_CREATE: #ifdef HAVE_X11 if (! pData->isEmbed) - puglX11SetWindowTypeAndPID(view); + puglX11SetWindowTypeAndPID(view, pData->appData->isStandalone); #endif break; diff --git a/dgl/src/pugl.cpp b/dgl/src/pugl.cpp index 7181fa3f..f18dcb28 100644 --- a/dgl/src/pugl.cpp +++ b/dgl/src/pugl.cpp @@ -608,7 +608,7 @@ PuglStatus puglX11GrabFocus(const PuglView* const view) // -------------------------------------------------------------------------------------------------------------------- // X11 specific, set dialog window type and pid hints -void puglX11SetWindowTypeAndPID(const PuglView* const view) +void puglX11SetWindowTypeAndPID(const PuglView* const view, const bool isStandalone) { const PuglInternals* const impl = view->impl; @@ -618,14 +618,15 @@ void puglX11SetWindowTypeAndPID(const PuglView* const view) const Atom _wt = XInternAtom(impl->display, "_NET_WM_WINDOW_TYPE", False); - // Setting the window to both dialog and normal will produce a decorated floating dialog - // Order is important: DIALOG needs to come before NORMAL - const Atom _wts[2] = { - XInternAtom(impl->display, "_NET_WM_WINDOW_TYPE_DIALOG", False), - XInternAtom(impl->display, "_NET_WM_WINDOW_TYPE_NORMAL", False) - }; + Atom _wts[2]; + int numAtoms = 0; - XChangeProperty(impl->display, impl->win, _wt, XA_ATOM, 32, PropModeReplace, (const uchar*)&_wts, 2); + if (! isStandalone) + _wts[numAtoms++] = XInternAtom(impl->display, "_NET_WM_WINDOW_TYPE_DIALOG", False); + + _wts[numAtoms++] = XInternAtom(impl->display, "_NET_WM_WINDOW_TYPE_NORMAL", False); + + XChangeProperty(impl->display, impl->win, _wt, XA_ATOM, 32, PropModeReplace, (const uchar*)&_wts, numAtoms); } // -------------------------------------------------------------------------------------------------------------------- diff --git a/dgl/src/pugl.hpp b/dgl/src/pugl.hpp index c19c82eb..2075627a 100644 --- a/dgl/src/pugl.hpp +++ b/dgl/src/pugl.hpp @@ -134,7 +134,7 @@ puglX11GrabFocus(const PuglView* view); // X11 specific, set dialog window type and pid hints PUGL_API void -puglX11SetWindowTypeAndPID(const PuglView* view); +puglX11SetWindowTypeAndPID(const PuglView* view, bool isStandalone); #endif PUGL_END_DECLS