]> git.mxchange.org Git - flightgear.git/blobdiff - src/GUI/CanvasWidget.cxx
Reset: GUI can be shutdown.
[flightgear.git] / src / GUI / CanvasWidget.cxx
index b2aeb59c48b6b969ebc8e5507e42f4f2bd7f2b5d..fc21d0c93cb1acfed2abd64a6061a129e2aa9a7f 100644 (file)
@@ -1,9 +1,20 @@
-/*
- * CanvasWidget.cxx
- *
- *  Created on: 03.07.2012
- *      Author: tom
- */
+// Airports forward declarations
+//
+// Copyright (C) 2012  Thomas Geymayer <tomgey@gmail.com>
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
@@ -29,7 +40,9 @@ CanvasWidget::CanvasWidget( int x, int y,
   puObject(x, y, width, height),
   _canvas_mgr( dynamic_cast<CanvasMgr*>(globals->get_subsystem("Canvas")) ),
   _last_x(0),
-  _last_y(0)
+  _last_y(0),
+  // automatically resize viewport of canvas if no size is given
+  _auto_viewport( !props->hasChild("view") )
 {
   if( !_canvas_mgr )
   {
@@ -82,12 +95,7 @@ CanvasWidget::CanvasWidget( int x, int y,
 CanvasWidget::~CanvasWidget()
 {
   if( _canvas )
-    // TODO check if really not in use anymore
-    _canvas->getProps()
-           ->getParent()
-           ->removeChild( _canvas->getProps()->getName(),
-                          _canvas->getProps()->getIndex(),
-                          false );
+    _canvas->destroy();
 }
 
 // Old versions of PUI are missing this defines...
@@ -185,8 +193,11 @@ void CanvasWidget::setSize(int w, int h)
 {
   puObject::setSize(w, h);
 
-  _canvas->getProps()->setIntValue("view[0]", w);
-  _canvas->getProps()->setIntValue("view[1]", h);
+  if( _auto_viewport )
+  {
+    _canvas->getProps()->setIntValue("view[0]", w);
+    _canvas->getProps()->setIntValue("view[1]", h);
+  }
 }
 
 //------------------------------------------------------------------------------