Added support for controlling border and override redirect to the SingleWindow View::Config

This commit is contained in:
Robert Osfield 2013-05-20 14:17:43 +00:00
parent 086ffd1672
commit acb4ba8554
3 changed files with 16 additions and 5 deletions

View File

@ -23,9 +23,9 @@ class OSGVIEWER_EXPORT SingleWindow : public ViewConfig
{ {
public: public:
SingleWindow():_x(0),_y(0),_width(-1),_height(-1),_screenNum(0) {} SingleWindow():_x(0),_y(0),_width(-1),_height(-1),_screenNum(0),_border(true),_overrideRedirect(false) {}
SingleWindow(int x, int y, int width, int height, unsigned int screenNum=0):_x(x),_y(y),_width(width),_height(height),_screenNum(screenNum) {} SingleWindow(int x, int y, int width, int height, unsigned int screenNum=0):_x(x),_y(y),_width(width),_height(height),_screenNum(screenNum),_border(true),_overrideRedirect(false) {}
SingleWindow(const SingleWindow& rhs, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY):ViewConfig(rhs,copyop), _x(rhs._x),_y(rhs._y),_width(rhs._width),_height(rhs._height),_screenNum(rhs._screenNum) {} SingleWindow(const SingleWindow& rhs, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY):ViewConfig(rhs,copyop), _x(rhs._x),_y(rhs._y),_width(rhs._width),_height(rhs._height),_screenNum(rhs._screenNum),_border(rhs._border), _overrideRedirect(rhs._overrideRedirect) {}
META_Object(osgViewer,SingleWindow); META_Object(osgViewer,SingleWindow);
@ -46,10 +46,18 @@ class OSGVIEWER_EXPORT SingleWindow : public ViewConfig
void setScreenNum(unsigned int sn) { _screenNum = sn; } void setScreenNum(unsigned int sn) { _screenNum = sn; }
unsigned int getScreenNum() const { return _screenNum; } unsigned int getScreenNum() const { return _screenNum; }
void setBorder(bool border) { _border = border; }
bool getBorder() const { return _border; }
void setOverrideRedirect(bool override) { _overrideRedirect = override; }
bool getOverrideRedirect() const { return _overrideRedirect; }
protected: protected:
int _x, _y, _width, _height; int _x, _y, _width, _height;
unsigned int _screenNum; unsigned int _screenNum;
bool _border;
bool _overrideRedirect;
}; };
} }

View File

@ -41,7 +41,8 @@ void SingleWindow::configure(osgViewer::View& view) const
traits->y = _y; traits->y = _y;
traits->width = _width; traits->width = _width;
traits->height = _height; traits->height = _height;
traits->windowDecoration = true; traits->windowDecoration = _border;
traits->overrideRedirect = _overrideRedirect;
traits->doubleBuffer = true; traits->doubleBuffer = true;
traits->sharedContext = 0; traits->sharedContext = 0;
@ -60,7 +61,7 @@ void SingleWindow::configure(osgViewer::View& view) const
if (traits->width<=0) traits->width = width; if (traits->width<=0) traits->width = width;
if (traits->height<=0) traits->height = height; if (traits->height<=0) traits->height = height;
} }
osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get()); osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get());
view.getCamera()->setGraphicsContext(gc.get()); view.getCamera()->setGraphicsContext(gc.get());

View File

@ -14,4 +14,6 @@ REGISTER_OBJECT_WRAPPER( osgViewer_SingleWindow,
ADD_INT_SERIALIZER( Width, -1); ADD_INT_SERIALIZER( Width, -1);
ADD_INT_SERIALIZER( Height, -1); ADD_INT_SERIALIZER( Height, -1);
ADD_UINT_SERIALIZER( ScreenNum, 0u); ADD_UINT_SERIALIZER( ScreenNum, 0u);
ADD_BOOL_SERIALIZER( Border, true);
ADD_BOOL_SERIALIZER( OverrideRedirect, true);
} }