From af271f99ec6c028a5e8514bb816c3e78b49a0aa9 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Sat, 21 Jun 2008 17:50:58 +0000 Subject: [PATCH] Added support for X11's overrideRedirect functionality --- include/osg/GraphicsContext | 6 +++++- src/osgPlugins/cfg/ReaderWriterCFG.cpp | 2 ++ src/osgViewer/GraphicsWindowX11.cpp | 5 +++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/osg/GraphicsContext b/include/osg/GraphicsContext index 5b0aaa751..56b7d9649 100644 --- a/include/osg/GraphicsContext +++ b/include/osg/GraphicsContext @@ -92,7 +92,8 @@ class OSG_EXPORT GraphicsContext : public Object useMultiThreadedOpenGLEngine(false), useCursor(true), sharedContext(0), - setInheritedWindowPixelFormat(false) {} + setInheritedWindowPixelFormat(false), + overrideRedirect(false) {} // graphics context original and size int x; @@ -145,6 +146,9 @@ class OSG_EXPORT GraphicsContext : public Object // ask the GraphicsWindow implementation to set the pixel format of an inherited window bool setInheritedWindowPixelFormat; + + // X11 hint whether to override the window managers window size/position redirection + bool overrideRedirect; }; diff --git a/src/osgPlugins/cfg/ReaderWriterCFG.cpp b/src/osgPlugins/cfg/ReaderWriterCFG.cpp index 927871c38..69894de2c 100644 --- a/src/osgPlugins/cfg/ReaderWriterCFG.cpp +++ b/src/osgPlugins/cfg/ReaderWriterCFG.cpp @@ -84,6 +84,8 @@ static osg::GraphicsContext::Traits* buildTrait(RenderSurface& rs) traits->sharedContext = 0; traits->pbuffer = (rs.getDrawableType()==osgProducer::RenderSurface::DrawableType_PBuffer); + traits->overrideRedirect = rs.usesOverrideRedirect(); + return traits; } diff --git a/src/osgViewer/GraphicsWindowX11.cpp b/src/osgViewer/GraphicsWindowX11.cpp index b6ad3fffe..6d3218a1e 100644 --- a/src/osgViewer/GraphicsWindowX11.cpp +++ b/src/osgViewer/GraphicsWindowX11.cpp @@ -655,11 +655,12 @@ bool GraphicsWindowX11::createWindow() swatt.event_mask = 0; unsigned long mask = CWBackPixel | CWBorderPixel | CWEventMask | CWColormap; - bool overrideRedirect = false; - if (overrideRedirect) + if (_traits->overrideRedirect) { swatt.override_redirect = true; mask |= CWOverrideRedirect; + + osg::notify(osg::NOTICE)<<"Setting override redirect"<