]> git.mxchange.org Git - simgear.git/blobdiff - simgear/canvas/CanvasWindow.cxx
Canvas: Support for preventDefault() on Events.
[simgear.git] / simgear / canvas / CanvasWindow.cxx
index 55f4d9b7480b7aa774f454e1987e9c0e62be741e..29ef354aaae482992424289c4a26282fea84599e 100644 (file)
@@ -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<Image>("content");
       _image_content->setSrcCanvas(content);
 
+      // Forward keyboard events to content
+      _image_content->setFocus();
+
       // Draw content on top of decoration
       _image_content->set<int>("z-index", 1);
     }