X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fcanvas%2FCanvasWindow.cxx;h=29ef354aaae482992424289c4a26282fea84599e;hb=942181c8ae24336de6ca5b28414238f8739de835;hp=55f4d9b7480b7aa774f454e1987e9c0e62be741e;hpb=23279b4d0aa04576b5b362f32a534eb494998b91;p=simgear.git diff --git a/simgear/canvas/CanvasWindow.cxx b/simgear/canvas/CanvasWindow.cxx index 55f4d9b7..29ef354a 100644 --- a/simgear/canvas/CanvasWindow.cxx +++ b/simgear/canvas/CanvasWindow.cxx @@ -125,6 +125,11 @@ namespace canvas void Window::setCanvasContent(CanvasPtr canvas) { _canvas_content = canvas; + if( _layout ) + { + canvas->setLayout(_layout); + _layout.clear(); + } if( _image_content ) // Placement within decoration canvas @@ -139,6 +144,16 @@ namespace canvas return _canvas_content; } + //---------------------------------------------------------------------------- + void Window::setLayout(const LayoutRef& layout) + { + CanvasPtr canvas = _canvas_content.lock(); + if( canvas ) + canvas->setLayout(layout); + else + _layout = layout; // keep layout until content canvas is set + } + //---------------------------------------------------------------------------- CanvasPtr Window::getCanvasDecoration() const { @@ -157,6 +172,19 @@ namespace canvas return _capture_events; } + //---------------------------------------------------------------------------- + void Window::setVisible(bool visible) + { + LayoutItem::setVisible(visible); + Element::setVisible(LayoutItem::isVisible()); + } + + //---------------------------------------------------------------------------- + bool Window::isVisible() const + { + return Element::isVisible(); + } + //---------------------------------------------------------------------------- void Window::raise() { @@ -252,6 +280,9 @@ namespace canvas ->createChild("content"); _image_content->setSrcCanvas(content); + // Forward keyboard events to content + _image_content->setFocus(); + // Draw content on top of decoration _image_content->set("z-index", 1); }